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 (将#修改为@)