【发布时间】:2016-05-27 20:49:36
【问题描述】:
我打算对我的 OpenGL 程序进行一些优化(它不需要优化,但我这样做是为了它)。出于好奇,与基本逻辑代码相比,OpenGL 绘图功能有多贵?目前,我正在开始一个游戏,其中屏幕充满了方块,以表示 2D 块状景观。这意味着多次调用正方形(两个三角形)的绘制调用。目前,我计划添加一些代码来查看当前帧中块的位置,并将它们组合在一起。例如,如果有一列是 7 块高,我可以调用一个函数来绘制一个 1 x 7 的矩形,而不是执行 7 个单独的 drawBlock() 函数(其中包含 glDrawElements() 调用)在整个屏幕上打开。
如果计算要绘制什么的代码实际上比单独绘制块消耗的 CPU 更多,我不会费心这样做。
【问题讨论】:
-
我不确定您的问题与
glDrawElements有何关系。听起来您正在尝试决定合并相邻的四边形是否值得;在这种情况下,最好的决定方法是通过分析。 -
@ColonelThirtyTwo:通常情况下进行分析是有必要的,但在这种情况下,这是已成定局。
glDrawElements是出了名的昂贵。 -
glDrawElements()通话非常非常昂贵。我建议将所有背景块放入单个 VBO,然后您可以为整个背景调用一次glDrawElements()。或者将其分成块,如果太大的话……但是每个glDrawElements()一个四边形不会导致每帧有很多四边形。 -
我一直到最后一句“...但是每个
glDrawElements()一个四边形不会导致每帧有很多四边形”好吧,这就是我现在正在做的事情,所以如果它不会产生很多四边形,你的意思是我应该让它更有效率吗?向数组添加顶点似乎有点被欺骗了!无论如何感谢您的帮助:)