5

我目前正在编写一个适用于 OpenGL ES 1.1 的 Android 应用程序。它在我开发它的 HTC Desire (Android 2.3.7) 上运行良好。现在我想在 Nexus 7 上测试它,但它只显示黑屏。我发现所有纹理都被简单地渲染为黑色。在没有渲染对象和纹理的部分上,我得到(几乎)黑色背景颜色。

所以我的问题是为什么纹理在某些设备上渲染得很好,而在其他设备上却不行?

纹理都是二次方的,大小为 2(即 512x512、1024x1024)。这些是创建纹理时使用的设置:

gl.glBindTexture(GL10.GL_TEXTURE_2D, getTextureId());   

// Create Nearest Filtered Texture
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
        GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
        GL10.GL_LINEAR);

// Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
        GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
        GL10.GL_REPEAT);

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE);

// Use the Android GLUtils to specify a two-dimensional texture image
// from our bitmap
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

我可以尝试在两个设备上渲染纹理吗?

4

1 回答 1

8

如果您从可绘制对象中获取位图,请确保它们都在 drawable-nodpi 文件夹中。

drawable否则,在不同的 android 密度(文件夹中的 1024x1024 图像在 HDPI 设备上变为 1536x1536)后,您的两个图像的幂可能不是两个图像的幂。

于 2012-09-07T20:33:38.893 回答