我有一个 OpenGL ES 游戏应用程序,它使用一个带有 27 个水平帧的 PNG Sprite 来表示一个动画怪物。因此,我的 PNG 目前的宽度为 27 * 96 像素,高度为 96 像素。
我最近添加了新的动画,所以它变成了 57 帧,现在它是 57 * 96,比 5000 px 宽一点。现在我的纹理只是显示为白色方 block !?
我用不同的图像、大小(以 KB 为单位)和分辨率对其进行了测试,我发现任何宽度超过 4000 像素的纹理都会得到这个白色方 block ,无论文件大小如何。
是内存问题吗?
您有解决这个问题的任何想法吗?
我正在 HTC Desire 上进行测试,我相信它可以与 Adreno 200 GPU 一起运行。
最佳答案
OpenGL 实现具有最大纹理宽度和高度,无论是桌面还是移动设备。你应该做的是,当动画纹理变得太宽时,只需开始一个新行。如果您将 glEnvironment 与 GL_MAX_TEXTURE_SIZE 一起使用,您可以找到设备的最大纹理大小:opengl.org/wiki/Textures_-_more .
请注意,它取决于硬件,因此对于您的 HTC 来说可能是 4096(实际上它大得惊人),但对于大多数其他手机 - 尤其是较旧的手机来说肯定较小。
关于java - Android:OpenGL ES:无法处理太宽的纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10970292/