从OpenGL VBO中删除数据

时间:2013-01-31 23:41:10

标签: opengl lwjgl vbo

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

1 个答案:

答案 0 :(得分:1)

  

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

  1. glMapBuffer()获取可写指针。

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

  3. glUnmapBuffer()重新上传VBO。

  4. 确保将count参数适当地缩减为glDrawElements()(或任何您使用的参数)。

  5. 您还可以使用glBufferSubData()创作广告。