-1

私が作成しているボクセル ゲームでは、世界をレンダリングするために VBO を使用しています。次のようなものを使用して、頂点を GPU に送信します。

    FloatBuffer vertexData = BufferUtils.createFloatBuffer(..?);

    float[] vertices = new float[..?];

    //vertex calculations go here

    vertexData.put(vertices);
    vertexData.flip();

    //send the vertices
    int vboVertexHandle = glGenBuffers();
    glBindBuffer(GL_ARRAY_BUFFER, vboVertexHandle);
    glBufferData(GL_ARRAY_BUFFER, vertexData, GL_STATIC_DRAW);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

ただし、頂点は動的に計算されるため、レンダリングする頂点の数を事前に知る方法はありません。そのため、FloatBuffer と配列に割り当てるスペースがわかりません。

ArrayList を使用することを考えましたが、遅くて効率が悪いようです。サイズを指定せずに配列または FloatBuffer を作成する方法はありますか? または、最終的にすべてを送信するのではなく、頂点が計算されるときにデータを GPU に送信しますか?

4

1 に答える 1

2

サイズを指定せずに配列または FloatBuffer を作成する方法はありますか?

ArrayListを使用してデータを生成し、頂点を にコピーしてから使用しないのはなぜFloatBufferですか?

于 2012-11-10T17:06:42.147 に答える