2

绑定代码:

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.xx 上:

画面不错

在 Android 2.3.7 上,我有:

屏幕不好

附加信息:我的纹理宽度和高度不是 2 的幂。纹理位于 drawable-nodpi 文件夹中。正在拉伸纹理以适应不同的屏幕尺寸第一个屏幕截图是从屏幕尺寸为 854x480 的设备截取的,第二个屏幕尺寸为 800x480。

  • 设备运行 CyanogenMod-7。

我的第一个嫌疑人是 gl.glTexParameterf (GL10.GL_TEXTURE_2D,设置,但我不是专家。我尝试了一些替代方案并没有太大帮助。

4

2 回答 2

3

对于 Android 上的 OpenGLES,您需要保持安全,因为许多供应商不使用非两种纹理的幂。您可以离线调整所有纹理的大小,也可以在加载期间调整它们的大小。查看此类以获取有关如何轻松调整两个纹理的非幂的更多信息:https ://github.com/TraxNet/ShadingZen/blob/master/library/src/main/java/org/traxnet/shadingzen/core/BitmapTexture .java

于 2013-02-01T09:55:12.900 回答
1

坏消息我尝试使用 2 值 (1024x1024) 的幂来设置纹理宽度和高度,它起作用了:

在此处输入图像描述

原因是这个设备,因为很多设备不支持 npot 纹理。

因此,我认为如果提供的纹理是 npot 尺寸的解决方案,最好在加载时动态调整它们的大小。

于 2013-01-31T17:01:05.820 回答