Я пытаюсь понять наложение текстур в OpenGL, и я не могу заставить работать простой пример.
Полигон рисуется, хотя он и не текстурированный, а сплошной цвет. Также растровое изображение корректно загружается в sprite1 [], так как я успешно использовал glDrawPixels до настоящего момента.
Я использую glGenTextures, чтобы получить мое имя tex, но я заметил, что оно не меняет texName1; этот GLuint - это то, к чему я его инициализирую, даже после вызова glGenTextures ...
Я включил GL_TEXTURE_2D.
Вот код:
GLuint texName1 = 0;
glGenTextures(1, &texName1);
glBindTexture(GL_TEXTURE_2D, texName1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (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);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, sprite1[18], sprite1[22], 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, &sprite1[54]);
glColor3f(1, 1, 0);
glBindTexture(GL_TEXTURE_2D, texName1);
glBegin(GL_QUADS);
glTexCoord2f (0.0, 0.0);
glVertex3f (0.0, 0.0, -5.0f);
glTexCoord2f (1.0, 0.0);
glVertex3f (.5, 0.0, -5.0f);
glTexCoord2f (1.0, 1.0);
glVertex3f (.5, .5, -5.0f);
glTexCoord2f (0.0, 1.0);
glVertex3f (0.0, .5, -5.0f);
glEnd();
UPDATE:
Я в недоумении. Вот все, что я пробовал:
Оказывается, я инициализировал свою текстуру до инициализации OGL. Текстура инициализируется (glGenTextures-> glTexImage2D) в конструкторе класса и отрисовывается (glBegin-> glEnd) в функции-члене, которая вызывается в каждом кадре. Похоже, genTextures теперь работает правильно, и я получаю имя 1.
Каждая возможная комбинация GL_RGBA8, GL_BGRA_EXT (GL_BGRA не работает в моей системе; мне нужен _EXT), и я даже удалил альфа-канал из растрового изображения и перепробовал все комбинации GL_RGB, GL_BGR_EXT и т. Д. И т. Д. . Не повезло.
Попытка процедурного создания растрового изображения и его использования
Убедитесь, что GL_COLOR_MATERIAL не включен.
Изменен размер растрового изображения на 32x32.
Пробовал glTexEnvi вместо glTexEnvf.