如何使用数组提供属性值?现在我正在使用glVertexAttribPointer(maPosition,3,GL_FLOAT,mVertBuffer) 我想使用包含4个三维点坐标的数组mVerts。
答案 0 :(得分:0)
Opengl.org有以下说法:
如果在指定通用顶点属性数组时将非零命名缓冲区对象绑定到GL_ARRAY_BUFFER目标(请参阅glBindBuffer),则将指针视为缓冲区对象的数据存储中的字节偏移量。此外,缓冲区对象绑定(GL_ARRAY_BUFFER_BINDING)被保存为索引索引的通用顶点属性数组客户端状态(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)。
这意味着您基本上必须这样做:
GLint currbuff =0;
//save the current bound buffer
glGetIntegerv(GL_ARRAY_BUFFER_BINDING,&currbuff);
//unbind the currently bound buffer
glBindBuffer(GL_ARRAY_BUFFER,0); //0 is reserved to unbind the currently bound buffer
//mVerts needs to be of type GLfloat *
glVertexAttribPointer(maPosition, 3, GL_FLOAT, mVerts);
//rebind the previously bound buffer
glBindBuffer(GL_ARRAY_BUFFER,currbuff);
如果你不使用GL_ARRAY_BUFFER