首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定的VAO问题

绑定的VAO问题
EN

Stack Overflow用户
提问于 2013-05-04 21:42:36
回答 2查看 277关注 0票数 0

帮助查找错误。

我认为绑定是错误的。在"display“中,我使用了VBO - all运行良好。

但是当我使用VAO时,我得到了黑屏。

代码语言:javascript
复制
void createVAO(GLuint *_vId, GLuint *_cId, GLuint *_tId, GLuint *_vao) {
glGenVertexArrays(1, _vao);
glBindVertexArray(*_vao);

glEnableClientState( GL_VERTEX_ARRAY );
glBindBuffer(GL_ARRAY_BUFFER, *_vId );
glVertexPointer( 3, GL_FLOAT, 0, 0 );

glBindVertexArray(0);

glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); }


void createVBO(GLuint *_vId, GLuint *_cId, GLuint *_tId) {
glGenBuffers(1, _vId);
glBindBuffer(GL_ARRAY_BUFFER, *_vId);
glBufferData(GL_ARRAY_BUFFER, sizeof(XYZ) * cubeVerticesCount, cubePositions, GL_STATIC_DRAW );
glBindBuffer(GL_ARRAY_BUFFER, 0); }


void display() {
glClear(GL_COLOR_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -800);
glRotatef(rotate.angle_x, 1, 0, 0);
glRotatef(rotate.angle_y, 0, 1, 0);
glScalef(zoom,zoom,zoom);

// VAO - dont work
glColor3f(1.0f,1.0f,1.0f);
glBindVertexArray(vao);
glDrawElements(GL_POINTS, 0, GL_UNSIGNED_INT, NULL);
glBindVertexArray(0);

// VBO - work
//glEnableClientState( GL_VERTEX_ARRAY );
//glBindBuffer( GL_ARRAY_BUFFER, vId );
//glVertexPointer( 3, GL_FLOAT, 0, 0 );
//glDrawArrays(GL_POINTS, 0, cubeVerticesCount);
//glDisableClientState(GL_VERTEX_ARRAY);

calculateFPS();
glutSwapBuffers(); }

完整的源代码。http://codepad.org/I87AxDl4

我为很多不必要的代码感到抱歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 21:45:38

VAO没有index buffer in itGL_ELEMENT_ARRAY_BUFFER是VAO国家的一部分。因此,当您绑定一个VAO时,绑定到GL_ELEMENT_ARRAY_BUFFER的内容将更改为该VAO的元素数组缓冲区。

在绑定VAO之后(但在解除绑定之前),您需要在createVAO中绑定元素缓冲区。

票数 1
EN

Stack Overflow用户

发布于 2013-05-04 21:50:14

您在VAO中正在使用没有任何GL_ELEMENT_ARRAY_BUFFERglDrawElements

您可能想要像// VBO - work一样使用glDrawArrays

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16374948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档