0

例如,我有以下代码:

//Create a vbo and bind it to the GL_ARRAY_BUFFER
glGenBuffers(1, &positionBufferObject);    
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);

//vertexPosition is an array of floats that stores the position of 3 vertices (x, y, z, w)
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);

//Enable the vbo at index 0 of the vao (assuming I have stored it previously at index 0)
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);

//Finally draw the triangle
glDrawArrays(GL_TRIANGLES, 0, 3);

我的问题是,glDrawArrays() 怎么知道绑定到 GL_ARRAY_BUFFER 的内容是指关于位置的信息,而不是关于颜色的信息?

4

1 回答 1

2

如果gl_Vertex可用(即不是核心配置文件),规范会调用该位置和顶点属性 0 别名。

gl 4.5 兼容性配置文件规范(第 401/1005 页):

设置通用顶点属性零指定一个顶点,如第 10.7.2 节所述。设置任何其他通用顶点属性会更新属性的当前值。顶点属性零没有当前值

于 2015-07-01T19:42:12.333 回答