私が作成しているボクセル ゲームでは、世界をレンダリングするために 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 に送信しますか?