绑定(bind)代码:
gl.glBindTexture (GL10.GL_TEXTURE_2D, id);
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);
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_CLAMP_TO_EDGE);
gl.glTexEnvf (GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);
GLUtils.texImage2D (GL10.GL_TEXTURE_2D, 0, bitmaps.get (resource), 0);
在 Android 2.3.3 和 Android 4.x.x 上:
在 Android 2.3.7 上我有:
附加信息:我的纹理宽度和高度不是 2 的幂。纹理位于drawable-nodpi 文件夹中。纹理被拉伸(stretch)以适应不同的屏幕尺寸,第一个屏幕截图是从屏幕尺寸为 854x480 的设备获取的,第二个屏幕截图是从屏幕尺寸为 800x480 的设备获取的。
- 设备运行 CyanogenMod-7。
我的第一个怀疑是 gl.glTexParameterf (GL10.GL_TEXTURE_2D, settings 但我不是它们的专家。我尝试了一些替代方案,但没有多大帮助。
最佳答案
对于 Android 上的 OpenGLES,您需要保持安全,因为许多供应商不使用非两个纹理的幂。您可以离线调整所有纹理的大小,也可以在加载期间调整它们的大小。检查此类以获取有关如何轻松调整两个纹理的非幂大小的更多信息:https://github.com/TraxNet/ShadingZen/blob/master/library/src/main/java/org/traxnet/shadingzen/core/BitmapTexture.java
关于java - OpenGL 在 Android 2.3.7(CyanogenMod-7) 上绑定(bind)空白纹理,而在其他 Android 版本上绑定(bind)实际图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629902/