Android OpenGL:为一个动画精灵使用多个纹理
Android OpenGL: Use several Textures for one Animated Sprite
我正在编写 Android 游戏。为了减少需要加载的纹理数量 (OpenGL ES 2.0),我创建了几个大小为 1024x1024 的 spritesheet。同一动画的某些帧位于不同的 spritesheet 上。现在我的问题是这是否对性能不利,因为我必须为每个动画帧绑定 (OpenGL.bind()) 不同的纹理?
是的,与不相比,更改纹理绑定对性能有一些影响。多少可能最好通过经验测试来确定。
如果可以切换到 OpenGL ES 3,则可以使用纹理数组,而不是纹理。
但是,如果那不是一个选项,为什么不简单地一次绑定所有的 Sprite 表呢?如果少于 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,则不需要更改纹理绑定,只需提供某种方式让着色器知道它应该转到哪个绑定纹理。
我正在编写 Android 游戏。为了减少需要加载的纹理数量 (OpenGL ES 2.0),我创建了几个大小为 1024x1024 的 spritesheet。同一动画的某些帧位于不同的 spritesheet 上。现在我的问题是这是否对性能不利,因为我必须为每个动画帧绑定 (OpenGL.bind()) 不同的纹理?
是的,与不相比,更改纹理绑定对性能有一些影响。多少可能最好通过经验测试来确定。
如果可以切换到 OpenGL ES 3,则可以使用纹理数组,而不是纹理。
但是,如果那不是一个选项,为什么不简单地一次绑定所有的 Sprite 表呢?如果少于 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,则不需要更改纹理绑定,只需提供某种方式让着色器知道它应该转到哪个绑定纹理。