【发布时间】:2012-07-11 06:43:28
【问题描述】:
我找到了一个名为 Rajawali 的 Android 3D 图形框架,我正在学习如何使用它。我遵循了最基本的教程,它使用 1024x512 大小的 jpg 图像为纹理渲染一个 shpere 对象。它在 Galaxy Nexus 上运行良好,但在 Galaxy Player GB70 上却无法运行。
当我说它不起作用时,我的意思是对象出现但纹理没有渲染。最终,我更改了一些在创建纹理时用于 Rajawali 框架的参数并使其工作。这是我发现的。
原因来自设置GL_TEXTURE_MIN_FILTER 的位置。以下四个值中
GLES20.GL_LINEAR_MIPMAP_LINEAR
GLES20.GL_NEAREST_MIPMAP_NEAREST
GLES20.GL_LINEAR
GLES20.GL_NEAREST
仅当GL_TEXTURE_MIN_FILTER 未设置为使用 mipmap 的过滤器时才会渲染纹理。因此,当 GL_TEXTURE_MIN_FILTER 设置为最后两个时,它可以工作。
现在这里是我不理解和好奇的地方。当我将用作纹理的图像缩小到 512x512 时,GL_TEXTURE_MIN_FILTER 设置无关紧要。 min 过滤器的所有四个设置都有效。
所以我的问题是,对纹理使用最小滤镜时,对图像的尺寸有要求吗?比如我需要使用正方形的图像吗?其他的东西,比如 wrap 样式或 mag 过滤器的配置是否有问题?
或者它看起来像是设备的 OpenGL 实现错误?
【问题讨论】:
标签: android opengl-es opengl-es-2.0 textures galaxy