-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?

为什么不直接使用 aArrayList来生成数据,将顶点复制到 aFloatBuffer中,然后使用它呢?

于 2012-11-10T17:06:42.147 回答