如何解决Vao和动态VBO
我正在使用动态vbo-ibo进行抽奖。
初始化缓冲区:
qglGenBuffers(1,&vbo.vbo_shadowDynamic);
qglBindBuffer(GL_ARRAY_BUFFER,vbo.vbo_shadowDynamic);
qglBufferData(GL_ARRAY_BUFFER,MAX_STREAM_VBO_VERTS * sizeof(vec4_t),GL_STREAM_DRAW);
qglBindBuffer(GL_ARRAY_BUFFER,0);
qglGenBuffers(1,&vbo.ibo_shadowDynamic);
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER,vbo.ibo_shadowDynamic);
qglBufferData(GL_ELEMENT_ARRAY_BUFFER,MAX_STREAM_IBO_IDX * sizeof(uint),GL_STREAM_DRAW);
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
绘制:
qglBindBuffer(GL_ARRAY_BUFFER,vbo.vbo_shadowDynamic); qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER,vbo.ibo_shadowDynamic);
qglEnabLevertexAttribArray(ATT_POSITION);
qglVertexAttribPointer(ATT_POSITION,4,GL_FLOAT,qfalse,0);
qglBufferSubData(GL_ARRAY_BUFFER,numVerts * sizeof(vec4_t),vcache4);
qglBufferSubData(GL_ELEMENT_ARRAY_BUFFER,id * sizeof(uint),icache);
qglDrawElements (GL_TRIANGLES,id,GL_UNSIGNED_INT,NULL);
qgldisabLevertexAttribArray(ATT_POSITION);
qglBindBuffer(GL_ARRAY_BUFFER,0);
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
一切正常。然后,我尝试将这些缓冲区绑定到VAO。
创建vao并绑定vbo-ibo:
glGenVertexArrays(1,&vao.shadow);
glBindVertexArray(vao.shadow);
qglBindBuffer(GL_ARRAY_BUFFER,vbo.vbo_shadowDynamic);
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER,vbo.ibo_shadowDynamic);
qglEnabLevertexAttribArray(ATT_POSITION);
qglVertexAttribPointer(ATT_POSITION,0);
glBindVertexArray(0);
qglBindBuffer(GL_ARRAY_BUFFER,0);
qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
并绘制它:
glBindVertexArray(vao.shadow);
qglBufferSubData(GL_ARRAY_BUFFER,vcache4);
qglBufferSubData(GL_ELEMENT_ARRAY_BUFFER,icache);
qglDrawElements (GL_TRIANGLES,NULL);
glBindVertexArray(0);
在渲染中,我们看到了来自多边形的垃圾。我哪里可能出错。静态缓冲区正常工作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。