我刚开始用OpenGL编程(v.3.3),我对这两个“对象”究竟是什么以及如何正确使用它感到困惑。
例如,假设我想在屏幕上绘制两个对象 - 球体和立方体。我应该创建两个VAO和两个缓冲区对象 - 每个一个,或者我应该创建一个VAO和两个缓冲区对象(中间调用glBindBuffer()
),或者创建一个VAO和一个缓冲区对象并调用{{ 1}}在绘制调用之间更新缓冲区对象?
答案 0 :(得分:0)
首先,由于您只有静态几何,为了获得最佳性能,您应该避免在绘制调用之间更新任何缓冲区数据,并且只使用静态缓冲区对象(一个用于球体,一个用于多维数据集,或者一个用于保存两个数据) )。
其次,顶点数组对象捕获当前绑定的缓冲区对象,因此您需要保留两个对应于两个缓冲区对象的顶点数组对象(一个用于球体,一个用于多维数据集)或者使用单个一个球体和立方体的数据已合并到单个缓冲区对象中。在后一种情况下,glDrawArrays
或glDrawElements
的参数将允许您选择球体或立方体数据(或者可以使用单个绘制调用绘制两者)。