OpenGl текстуры - PullRequest
       4

OpenGl текстуры

0 голосов
/ 29 марта 2011

я пытаюсь применить 2 текстуры к моему уровню, код компилируется, но уровни выходят полностью белыми,

struct Image 
{
    unsigned long size_x;
    unsigned long size_y;
    char *data;
}

typedef struct Image Image;

const int textureCount = 2;

Image myTextureData[textureCount];
GLuint theTexture[textureCount];

char* textureFilenames0[textureCount] = {"road.bmp"};
char* textureFilenames1[textureCount] = {"building.bmp"};

класс загрузчика текстур

void textureLoader() 
{

    /*glPixelStorei(GL_UNPACK_ALIGNMENT, 1);*/

    glGenTextures(2, theTexture);


    glBindTexture(GL_TEXTURE_2D, theTexture[0]);
    for(int k=0; k < textureCount; k++) 
    {
        if(!imageLoader(textureFilenames0[k], &myTextureData[k])) 
            exit(1);

        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);

        gluBuild2DMipmaps(GL_TEXTURE_2D, 3, myTextureData[k].size_x, myTextureData[k].size_y, GL_RGB, GL_UNSIGNED_BYTE, myTextureData[k].data);

    glBindTexture(GL_TEXTURE_2D, theTexture[1]);
    for(int k=0; k < textureCount; k++) 
    {
        if(!imageLoader(textureFilenames1[k], &myTextureData[k])) 
            exit(1);

        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);

        gluBuild2DMipmaps(GL_TEXTURE_2D, 3, myTextureData[k].size_x, myTextureData[k].size_y, GL_RGB, GL_UNSIGNED_BYTE, myTextureData[k].data);
    }
}

1 Ответ

1 голос
/ 29 марта 2011

Вы звонили

glEnable(GL_TEXTURE_2D);

и glTexCoord2 или glTexCoordPointer?

Кроме того, попробуйте установить параметры текстуры перед загрузкой данных.

Наконец, при использовании циклов вам нужны все имена файлов в одном массиве, например

char* textureFilenames[textureCount] = {"road.bmp", "building.bmp"};

Или вы можете избавиться от цикла и написать

char* textureFilenames0 = "road.bmp";
char* textureFilenames1 = "building.bmp";

Но нет textureCount файлов с дорожным растровым изображением внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...