我是 OpenGL 和图形编程的新手。到目前为止,我一直在读一本非常详尽而且写得很好的教科书。然而,我在代码中遇到了一个我不太理解的问题,在继续之前,我想弄清楚这些代码行的含义。
GLuint abuffer;
glGenVertexArrays(1, &abuffer);
glBindVertexArray(abuffer);
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(points), points, GL_STATIC_DRAW);
这本书解释说,前三行创建了一个 顶点数组对象顶点数组对象,用于将关联数据与顶点数组捆绑在一起。第二行找到一个未使用的名称(我猜是存储在 abuffer
中的无符号整数标识符) ,第三行创建对象/使其处于活动状态。
书中解释说,第4-7行创建了一个 缓冲对象来存储我们的数据,第5行给出了一个未使用的标识符(类似于顶点数组对象的第2行?)第6行创建缓冲区,第7行在 CPU 上分配足够的内存,并为 GL_STATIC_DRAW
创建一个指向数据(点)的指针。
对象处于活动状态意味着什么?你什么时候会使用 abuffer
?对于一个顶点数组来说,捆绑相关的数据意味着什么? 什么时候这些数据与这个顶点数组对象相关联?
我对 abuffer
和 buffer
之间的关系感到困惑。我对顶点数组与缓冲对象的关系以及在什么时候形成这种关系感到困惑。我不确定它们是否有关联,但它们在教科书中一个接一个地出现。
如果你能帮忙,我会很感激的,谢谢。