2

我在 ByteBuffer 中加载了一个 DXT1 纹理,我正在尝试使用 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 调用上给了我错误“无效操作”。似乎无法弄清楚为什么。

4

1 回答 1

1

好的,我弄清楚了问题所在。imageData 的大小不正确。由于 DXT1 是每像素 4 位,我一直认为它应该是 w * h * 4。它应该是 w * h * 1/2(4 位是 1/2 个字节)。

于 2011-04-24T17:13:36.187 回答