对opengl纹理尺寸要求进行澄清

时间:2015-09-29 18:22:42

标签: opengl opengl-es libgdx textures

我正在开发一款游戏(使用libGDX,适用于Windows,Linux和Android,基于OpenGL 2)。我知道在OpenGL中对纹理大小有一些技术限制/要求。但我听到有关这些的相互矛盾的陈述,所以我需要澄清一下:

  • 最大纹理尺寸:我猜它是依赖于设备的,有些约2048x2048应该保存在中途的现代设备上。正确?这适用于纹理图集或整个纹理对象吗?
  • 二次幂:OpenGL 2支持边长不是2的幂的纹理。但我听说使用这种旧的fashinod大小的纹理可能更安全。正确的吗?
  • 位图大小:加载到游戏中的位图大小(例如player_sprite.png)是否与此最大纹理大小或此功能有关?

1 个答案:

答案 0 :(得分:1)

  

最大纹理尺寸:我猜它依赖于设备,有些约2048x2048应该保存在中途的现代设备上。正确?这适用于纹理图集或整个纹理对象吗?"

GLES2规范规定最大纹理大小必须为64x64或更高。绝大多数Android和所有iOS GLES2设备都是2048x2048或更高。如果你能够下载到1024x1024,那么几乎所有的Android设备都是安全的。对于桌面目标,我认为2048x2048会没问题。

  

二次幂:OpenGL 2支持边长不是2的幂的纹理。但是我听说使用这种古老的fashinod大小的纹理可能更安全。正确的吗?

使用非幂二纹理需要注意的是,可以限制mipmapping和纹理包装。出于这个原因,我几乎一直使用2次幂纹理。使用纹理图集是提高性能和减少纹理浪费的好方法,因为许多形状笨拙的纹理可以组合成一个单一的大功率纹理。

  

位图大小:加载到游戏中的位图(例如player_sprite.png)的大小是否与此最大纹理大小或此二次幂相关?

不确定我理解这个问题。如果您要渲染纹理,那么png可能会被引擎加载并放入OpenGL纹理中,此时它受到与OpenGL最大纹理大小和幂的关系相关的规则的约束。二。

相关问题