在OpenGL中渲染两个对象:一个缓冲区与两个缓冲区?

时间:2015-08-07 13:27:40

标签: opengl

我想使用着色器在OpenGL中渲染两个对象。

要渲染我的第一个对象,我使用glGenBuffers()创建一个顶点缓冲区,然后使用glBufferData()用数据填充顶点缓冲区,最后使用glDrawArrays()绘制顶点缓冲区。

现在,要绘制我的第二个对象,我可以想到两种方法。首先,我可以将第二个对象的所有顶点附加到上面创建的顶点缓冲区,然后使用一次调用glDrawArrays()绘制两个对象的所有顶点。或者,我可以创建第二个顶点缓冲区,用第二个对象的数据填充它,然后第二次为第二个对象调用glDrawArrays()

哪种方法最好?第二种方法允许我保持每个对象的呈现独立,这可能使代码更容易遵循,但它也可能在运行时更慢...

1 个答案:

答案 0 :(得分:0)

如果你可以将多个对象组合成一个绘制调用,那么这样做总是一个好主意,因为这意味着对opengl的调用越少,它就会越快。一个问题是,当你的对象需要不同的变换矩阵,不同的着色器等时,它会更复杂一些。

相关问题