适用于Nexus的OpenGL代码在NexusS上无法正常工作。纹理似乎不会呈现,我只剩下黑色的纹理。

有人有什么想法吗?

有帮助吗?

解决方案

这里给出的答案 比我更深入地解决这个问题,但是尽管这个黑屏问题确实来自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);

其他提示

Nexus S更严格,对露天ES中用作纹理的图像的大小。

纹理必须为2^n(例如256、512、1024等)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top