【发布时间】:2011-10-29 13:51:57
【问题描述】:
我在 OpenGL 中有一个 VBO 和一个 IBO,但无法正确绘制它们。你能告诉我我在框架显示功能中忘记了什么吗? - struct Point3D 是一个在 (x,y,z) 内有 3 个浮点数的结构。 - nbVertex 是 glVertex 数组中的顶点数量。 - nbVBOInd 是 VBOInd 数组中的索引数量。
glGenBuffers(1, &VertexVBOID);
glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
glBufferData(GL_ARRAY_BUFFER, sizeof(struct Point3D)*nbVertex, glVertex, GL_STATIC_DRAW);
glGenBuffers(1, &IndexVBOID);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*nbVBOInd, VBOInd, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(glVertex), BUFFER_OFFSET(0)); //The starting point of the VBO, for the vertices
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, BUFFER_OFFSET(0)); //The starting point of the IBO
谢谢!
【问题讨论】:
-
您为哪个 OpenGL 版本生成上下文?
-
抱歉这个愚蠢的问题:我怎样才能找到这个?
-
@Laurent 这取决于您的平台。您使用 QGLViewer 还是 glut 或其他东西?通常确实提供一些开关来创建具有特定版本的上下文。
标签: c opengl vbo vertex-buffer indices