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で1つのキューブを作成する方法がほとんどわからないので、明らかに問題がある場合は申し訳ありません。

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/ glPopMatrixwayは、新しいopenGlバージョンでは非推奨になっていることに注意してください。を使用しているので、うまくいくはずですGL11

于 2012-12-26T18:20:15.643 に答える