2D Sprite批处理

时间:2012-12-30 19:07:36

标签: opengl opengl-es opengl-es-2.0 sprite

我正在为2D场景中的每个精灵调用glDrawElements。我想改变它。

场景由幕外渲染缓冲区(FBO)组成,目前只有一个精灵表格纹理用于构成整个场景。

如果我将所有glDrawElements排队到一个大缓冲区中,我认为这样可行,但是......将来(当我有多个精灵表格纹理时)我必须提交每次需要调用glBindTexture时的当前缓冲区?

我问(对于这个通常显而易见的问题)的原因是FBO有一个深度缓冲区,这让我想知道我绘制精灵的顺序是否无关紧要(意味着我可以绘制一个纹理的所有精灵) ,然后绘制其他纹理的所有精灵,并忽略我绘制它们的顺序(使用Z轴对它们进行排序)。

1 个答案:

答案 0 :(得分:2)

如果没有涉及混合,那么订单实际上并不重要。但是有一个更好的方法:使用textue atlas。

这意味着使用一个绘制调用来绘制所有精灵并包含纹理坐标以选择要使用的精灵。 (单个)纹理只包含所有精灵。