2

4096 個のキューブを保持する VBO があり、実際にキューブを削除するために VBO を編集できるかどうか疑問に思っています。これが私の vbo をレンダリングするためのコードです (古い方法でレンダリングしていることはわかっています)。

for (int y = 0; y < 16; y++) {
        for (int x = 0; x < 16; x++) {
            for (int z = 0; z < 16; z++) {
                glPushMatrix();
                glTranslatef(x, y, z);
                glDrawArrays(GL_QUADS, 0, 24);
                glPopMatrix();
            }
        }

    }
    glDisableClientState(GL_VERTEX_ARRAY);

とてもシンプルです。実際にメソッドを使用して vbo からデータを削除できますか? 別の arraylist を作成し、そこにすべてのキューブを追加して、そこから削除する必要がありますか? 私はLWJGLを使用していますが、それが問題になるとは思えません。

4

1 に答える 1

1

VBO を編集してキューブを実際に削除できるかどうか疑問に思っています。

  1. glMapBuffer()書き込み可能なポインターを取得します。

  2. 削除する頂点を VBO の最後に入れ替えます。

  3. glUnmapBuffer()VBO を再アップロードします。

  4. count引数glDrawElements()(または使用するもの) を適切に減らすようにしてください。

でクリエイティブになることもできますglBufferSubData()

于 2013-02-01T00:36:58.980 に答える