可在 Nexus One 上运行的 OpenGL 代码在 Nexus S 上无法正常运行。 纹理似乎没有渲染,我只剩下黑色应该是纹理的地方。
有人有什么想法吗?
最佳答案
accepted answer given here比我更深入地解决了这个问题,但是虽然这个黑屏问题确实是由于 Nexus S(和其他一些设备)对二次幂纹理很严格,这并不意味着纹理需要具有 Po2 的维度。
在纹理加载代码中,可能有如下几行:
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
并且如果修改此代码以添加两行用于钳位,则手机将支持 nPo2 纹理,前提是可以进行钳位。这是添加了钳位的代码:
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
关于android - Nexus S 上的 OpenGL ES 黑色纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781369/