2

我有一个 OpenGL ES 游戏应用程序,它使用一个带有 27 帧水平的 PNG 精灵来表示一个动画怪物。所以,我的 PNG 目前是 27 * 96 像素宽和 96 像素高。

我最近给它添加了新的动画,所以它变成了 57 帧,现在它是 57 * 96,比 5000 像素多一点宽。现在我的纹理只是显示为白色方块!?

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

是内存问题吗?
你对修复它有什么想法吗?

我正在测试我认为与 Adreno 200 GPU 一起运行的 HTC Desire。

4

1 回答 1

3

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

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

于 2012-06-10T16:33:59.613 回答