我只是开始在OpenGL(v。3.3)中进行编程,而我对这两个“对象”到底是什么以及如何正确使用它们感到困惑。
例如,假设我要在屏幕上绘制两个对象-一个球体和一个立方体。我应该创建两个VAO和两个缓冲区对象-分别一个,还是应该创建一个VAO和两个缓冲区对象(之间有一个调用glBindBuffer()
),或者创建一个VAO和一个缓冲区对象并调用glBufferData()
以在两者之间更新缓冲区对象打电话?
首先,由于只有静态几何体,为了获得最佳性能,您应该真正避免在绘制调用之间更新任何缓冲区数据,而应仅使用静态缓冲区对象(一个用于球体,一个用于立方体,或一个包含两个数据的单个)。
其次,顶点数组对象捕获当前绑定的缓冲区对象,因此您需要保留与两个缓冲区对象相对应的两个顶点数组对象(一个用于球体,另一个用于立方体),或者如果数据用于球体和立方体已合并到单个缓冲区对象中。在后一种情况下,可以使用glDrawArrays
或的参数glDrawElements
来选择球体或立方体数据(或可以通过一次绘制调用来绘制两者)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句