Сжатая текстура Opengl с lwjgl

У меня есть текстура DXT1, загруженная в ByteBuffer, и я пытаюсь загрузить ее с помощью Opengl.

int tID = glGenTextures();
glBindTexture(GL_TEXTURE_2D, tID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, w, h, 0, imageData);
System.out.println(gluErrorString(glGetError()));

Это дает мне ошибку «Недопустимая операция» при вызове glCompressedTexImage2D. Не могу понять, почему.


person terryhau    schedule 09.04.2011    source источник


Ответы (1)


Хорошо, я понял, в чем проблема. Неверный размер imageData. Поскольку DXT1 имеет 4 бита на пиксель, я продолжал думать, что это должно быть w * h * 4. Должно было быть w * h * 1/2 (4 бита - это 1/2 байта).

person terryhau    schedule 24.04.2011