【问题标题】:Android: OpenGL ES: Can't handle too wide textures?Android:OpenGL ES:不能处理太宽的纹理?
【发布时间】:2012-06-11 02:51:48
【问题描述】:

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

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

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

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

我正在 HTC Desire 上进行测试,我相信它与 Adreno 200 GPU 一起运行。

【问题讨论】:

  • OpenGL 实现具有最大纹理宽度和高度,无论是桌面还是移动。你应该做的是当动画纹理变得太宽时,只需重新开始。
  • 我不知道..你有一些参考链接吗?
  • 如果你使用 glEnvironment 和 GL_MAX_TEXTURE_SIZE,你可以找到你设备的最大纹理尺寸:opengl.org/wiki/Textures_-_more 注意它取决于硬件,所以你的 HTC 可能是 4096(它实际上大得惊人),但对于大多数其他手机(尤其是较旧的手机)来说肯定更小。
  • 是的,我刚刚发现 :) 将其作为答案发送,以便我接受。
  • 你真是太好了 :)

标签: java graphics opengl-es android


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多