我在绘制没有索引的缓冲区对象时出现问题。我的其他索引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);
}
答案 0 :(得分:2)
您没有使用“裙边缓冲区”进行绘图。在drawArray
中,您实际上将顶点指针设置为指向VAO.vertexBufferID
中的偏移0(无论那时是什么,而且从未将其设置为其他任何。< / p>
缓冲区引用是顶点属性指针的部分,GL_ARRAY_BUFFER
调用时当前绑定的gl*Pointer()
将是用于该指针。绘制调用时的GL_ARRAY_BUFFER
绑定完全不相关,只是更改该绑定不会影响属性指针。
如果你只渲染裙子,它会崩溃,因为你的属性指针根本没有被设置为任何有用的东西。