opengl es 2.0 etc1 powervr SGX 540

时间:2013-06-24 15:15:16

标签: opengl-es-2.0 textures compression

我的ETC1纹理有问题。要加载ETC1纹理,我使用自己的代码加载ETC1图像的原始数据,然后我使用GL操作将数据加载到GPU内存中GLES20.glCompressedTexImage2D(GLES20.GL_TEXTURE_2D, 0, 0x8D64, textureWidth, textureHeight, 0, rawSize, data); 但是当设备使用PowerVR SGX540 GPU时,只有尺寸为512x512的纹理才能正确绘制。我不明白为什么。 OpenGL ES 2.0标准说我可以使用具有二维非幂的纹理。请帮我解决我的问题。

1 个答案:

答案 0 :(得分:1)

OpenGL ES 2.0确实没有两个限制的功能,但是包装模式和最小过滤器受到限制。请阅读http://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml上的说明 其中说明:

  

同样,如果纹理图像的宽度或高度不是2的幂,并且GL_TEXTURE_MIN_FILTER设置为需要mipmaps的其中一个函数,或GL_TEXTURE_WRAP_S或GL_TEXTURE_WRAP_T未设置为GL_CLAMP_TO_EDGE,则纹理图像单元将return(R,G,B,A)=(0,0,0,1)。

另外,我建议您阅读有关此问题的答案和评论:Can OpenGL ES render textures of non base 2 dimensions?