我有一个容纳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,但我怀疑这很重要。
答案 0 :(得分:1)
我想知道是否可以编辑VBO来实际删除多维数据集。
glMapBuffer()
获取可写指针。
将要删除的顶点交换到VBO的末尾。
glUnmapBuffer()
重新上传VBO。
确保将count
参数适当地缩减为glDrawElements()
(或任何您使用的参数)。
您还可以使用glBufferSubData()
创作广告。