android - Nexus S 上的 OpenGL ES 黑色纹理

标签 android opengl-es opengl-es-2.0 nexus-s

可在 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/

相关文章:

Android OpenGL 缓冲和 glFlush

android - "WSEGL_WaitNative: Unrecognized engine"错误的可能原因是什么? (安卓NDK)

ios - 在OpenGL的类中更改C结构的值- objective-c

java - 如何在android中将arraylist变量从一个类调用到另一个类

java - 如何改变android中的坐标值?

android - RelativeLayout 未正确更新自定义 View 的宽度

objective-c - Paint 应用程序,使用帧缓冲区在 OpenGL ES 中渲染纹理

c - gles2 中的 Mipmap 出现空白

ios - 一个opengles 2.0应用程序中的多个绘图层

java - 获取 logcat 以显示整个下载的 HTML