0

我已经设法使用 VBO 在 OpenGL 中渲染了一个立方体。我的下一个目标实际上是创建一个 for 循环来创建多个立方体。不过,我被困在这一部分上,我是否输入了以下代码:

GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
    ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, vertexBufferID);
    GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);
    GL11.glDrawArrays(GL11.GL_QUADS, 0, 24);
    GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);

进入for循环?我不是必须使用某种 glPopMatrix 命令和翻译功能吗?我几乎不明白如何在 VBO 中创建一个立方体,如果它明显出了什么问题,我很抱歉。

4

1 回答 1

1

您可以使用以下方式:

GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, vertexBufferID);
GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);

for (int i = 0; i < cubeCount; i++) {
  GL11.glPushMatrix();
  // do translation/rotation for cube no i
  GL11.glDrawArrays(GL11.GL_QUADS, 0, 24);
  GL11.glPopMatrix();
}

GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);

请注意glPushMatrix/glPopMatrix方式在较新的 openGl 版本中已被弃用。对您来说,它应该可以工作,因为您正在使用GL11.

于 2012-12-26T18:20:15.643 回答