试图了解OpenGL状态和对象存储

时间:2015-06-18 00:42:24

标签: opengl

我很难理解国家究竟是什么意思。我已经阅读过有关顶点数组对象(VAO)和顶点缓冲对象(VBO)以及上下文创建的内容。到目前为止,我已经理解上下文是与您创建的OpenGL实例相关的所有内容的状态。

我还了解到,VAO是对您创建的OpenGL分配的名称的引用,VBO是这些VAO的数据。但是,在the OpenGL red book中,它表示当你创建VBO时,OpenGL会向VBO分配一个你明显必须绑定到VAO的状态。

我不理解的是对象和上下文之间的关系。如果上下文应该是OpenGL实例的状态,为什么它会创建它分配给顶点缓冲区对象的其他状态?每当你调用一些改变上下文状态的函数时,它实际上都会改变VBO而不是上下文的实际默认状态。

我是否正确理解了这一点,还是我在这里混淆了什么?

1 个答案:

答案 0 :(得分:0)

OpenGL上下文包含OpenGL实例中的所有状态。 VBO和VAO是该全球范围内的子状态。州。它们不能存在于GL上下文之外(尽管您可能与其他上下文共享它们)。当您对VBO或VAO执行操作时,您正在修改VBO / VAO的状态,这是GL上下文的一部分,因此您也在修改它。