2012-12-30 61 views
0

我正在为2D场景中的每个精灵调用glDrawElements。我想改变这一点。2D雪碧分批

该场景由到屏幕外呈现缓冲区中(FBO),并且在当前正在用来组成整个场景只有一个精灵片的质感。

如果我将所有glDrawElements排队到一个单独的大缓冲区中,我认为这样会工作,但是......将来(当我有多个sprite-sheet纹理时),我必须提交当前缓冲区每次需要拨打glBindTexture

我问的原因(对于这个通常很明显的问题)是,FBO有一个深度缓冲区,这让我想知道我绘制精灵的顺序可能是微不足道的(这意味着我可以绘制所有的精灵为一个纹理,然后绘制所有的精灵为其他质地,而忽略其中我画他们(使用Z轴对它们进行排序)的顺序。

回答

2

如果没有混合涉及的顺序事实上确实没有关系。但是,有一个更好的方法:使用textue图集

这意味着使用一个绘制调用来绘制所有的精灵,并包括纹理坐标选择哪个精灵使用(单)质地只包含人。我并肩作战。

+0

除非纹理图谱被允许超过OpenGL实现的最大纹理尺寸限制,否则在我的情况下是没用的。我的精灵表是使用我的工具构建的,对于给定的最大纹理尺寸尽可能最佳。 –