1

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

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);
}
4

1 回答 1

2

您没有使用“裙子缓冲区”进行绘图。实际上drawArray,您将顶点指针设置为指向偏移量 0 in VAO.vertexBufferID(无论是什么,当时。而且您从未将其设置为其他任何东西

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

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

于 2014-07-02T21:44:31.110 回答