在我正在制作的体素游戏中,我使用 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,而不是最终将它们全部发送?