问题描述
我正在使用动态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 (将#修改为@)