【发布时间】:2015-08-07 13:27:39
【问题描述】:
我想在 OpenGL 中使用着色器渲染两个对象。
为了渲染我的第一个对象,我使用glGenBuffers() 创建一个顶点缓冲区,然后使用glBufferData() 用数据填充顶点缓冲区,最后使用glDrawArrays() 绘制顶点缓冲区。
现在,要绘制我的第二个对象,我可以想到两种方法。首先,我可以将我的第二个对象的所有顶点附加到上面创建的顶点缓冲区,然后使用一次调用glDrawArrays() 绘制两个对象的所有顶点。或者,我可以创建第二个顶点缓冲区,用来自第二个对象的数据填充该缓冲区,然后为该第二个对象再次调用 glDrawArrays()。
哪种方法最好?第二种方法允许我保持每个对象的独立呈现,这可能会使代码更容易理解,但在运行时也可能会更慢......
【问题讨论】:
-
一个和两个缓冲区之间的差异不会影响您的运行时性能(除非您以纳秒为单位进行测量)。如果您必须每帧执行数千次调用,我会坚持使代码清晰,并且只考虑将所有内容合并到一个缓冲区中。
标签: opengl