Android:OpenGL ES:无法处理太宽的纹理?

时间:2012-06-10 16:25:12

标签: java graphics opengl-es android

我有一个OpenGL ES游戏应用程序,它使用单个PNG精灵,其上有27帧,代表一个动画怪物。所以,我的PNG目前宽度为27 * 96像素,高度为96像素。

我最近添加了新的动画,所以它变成了57帧,现在它是57 * 96,宽度略高于5000 px。现在我的纹理只显示为白色方块!?

我用不同的图像,大小(以KB为单位)和分辨率测试了它,我发现任何宽度超过4000像素的纹理都会得到这个白色方块,无论文件大小如何。

是记忆问题吗? 你对修理它有什么想法吗?

我正在测试HTC Desire,我认为它与Adreno 200 GPU配合使用。

1 个答案:

答案 0 :(得分:3)

OpenGL实现具有最大的纹理宽度和高度,无论是桌面还是移动。你应该做的是当动画纹理太宽时,只需开始一个新的行。如果您使用GL_MAX_TEXTURE_SIZE的glEnvironment,您可以找到设备的最大纹理尺寸:opengl.org/wiki/Textures_-_more

请注意,它取决于硬件,因此HTC可能是4096(实际上它实际上非常大),但对于大多数其他手机来说肯定更小 - 尤其是旧手机。