我找到了一个名为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
设置无关紧要。最小过滤器的所有四个设置都有效。
所以我的问题是,对纹理使用最小过滤器时对图像的尺寸有要求吗?比如我需要使用正方形的图像吗?其他的东西,比如包装样式或磁过滤器的配置是否有问题?
或者它看起来像是设备的 OpenGL 实现错误?