0

我对 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 标准说我可以使用非二维的纹理。请帮我解决我的问题。

4

1 回答 1

1

确实,OpenGL ES 2.0 没有两个限制的力量,但是环绕模式和最小过滤器受到限制。请阅读http://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml上的注释, 其中指出:

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

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

于 2013-06-24T15:30:05.657 回答