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 中删除数据吗?我是否必须创建一个单独的数组列表并将所有多维数据集添加到其中并从那里删除它们?我正在使用 LWJGL,但我怀疑这很重要。

4

1 回答 1

1

我想知道我是否可以编辑 VBO 以实际删除一个多维数据集。

  1. glMapBuffer()得到一个可写的指针。

  2. 将要删除的顶点交换到 VBO 的末尾。

  3. glUnmapBuffer()重新上传 VBO。

  4. 确保适当地减少count论点glDrawElements()(或你使用的任何东西)。

您还可以通过glBufferSubData().

于 2013-02-01T00:36:58.980 回答