我正在尝试使用现代 OpenGL 和着色器,而不是到目前为止我一直在使用的即时模式。我最近了解了 VBO 和 VAO,我仍在努力了解它们,但我知道 VBO 需要一组作为顶点的浮点数,然后将其传递给 GPU 等
使用 VBO 绘制多个对象(都相同)但位置不同的最佳方法是什么。我是否必须绘制一个,然后修改预先传入的数组,然后再次绘制它并修改并绘制和修改等等......每一帧屏幕中的所有块?或者,还有更好的方法?
我正在努力实现这一目标:http : //imgur.com/cBgJ0sK
感谢任何帮助 - 当我可以学习更现代的方式时,我不想学习坏的(已弃用的,旧的)即时模式习惯!
我计划对我的 OpenGL 程序进行一些优化(它不需要优化,但我是为了优化而这样做)。出于好奇,OpenGL 绘图函数与基本逻辑代码相比有多昂贵?目前,我正在开始一个游戏,屏幕上充满了方块,以代表 2D 块状景观。这意味着正方形(两个三角形)的绘制调用被调用多次。目前,我计划添加一些代码来查看当前帧中块的位置,并将它们分组在一起。例如,如果有一列有 7 个块高,我可以调用一个函数来绘制一个 1 x 7 的矩形,而不是执行 7 个单独的 drawBlock() 函数(其中包含 glDrawElements() 调用),等等开,整个屏幕。
如果计算绘制内容的代码实际上比单独绘制块占用更多的 CPU,我就不会费心这样做。