2013-06-24 141 views
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標準說,我可以使用具有兩維非功能的紋理。請幫我解決我的問題。opengl es 2.0 etc1 powervr SGX 540

回答

1

確實,OpenGL ES 2.0沒有兩個限制的功能,但是包裝模式和最小過濾器都受到限制。請閱讀其中規定上http://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml 調:

同樣,如果一個紋理圖像的寬度或高度是不爲二的冪並且或者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?

+0

OpenGL ES 2.0的不會對NPOT紋理限制,但一定的GPU確實有此限制。所以你必須首先通過相應的擴展名(GL_OES_texture_npot,'GL_IMG_texture_npot')檢查對NPOT的支持。 – keaukraine