OpenGL从神秘缓冲区绘制数据

时间:2014-07-02 20:47:29

标签: opengl vbo gldrawarrays

我在绘制没有索引的缓冲区对象时出现问题。我的其他索引vbos画得很好......

void drawArray(VertexArrayObject VAO)
{
    GL11.glColor3d(1.0f, 0.2f, 0.2f);
    GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, VAO.southSkirtBufferID);
    GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, VAO.southSkirtLength);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);     
    GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
}

1 个答案:

答案 0 :(得分:2)

您没有使用“裙边缓冲区”进行绘图。在drawArray中,您实际上将顶点指针设置为指向VAO.vertexBufferID中的偏移0(无论那时是什么,而且从未将其设置为其他任何。< / p>

缓冲区引用是顶点属性指针的部分GL_ARRAY_BUFFER调用时当前绑定的gl*Pointer() 将是用于该指针。绘制调用时的GL_ARRAY_BUFFER绑定完全不相关,只是更改该绑定不会影响属性指针。

如果你只渲染裙子,它会崩溃,因为你的属性指针根本没有被设置为任何有用的东西。