我正在尝试制作一个 OpenGL 渲染器,它将各种形状混合成一个大网格并将它们存储在两个 VBO 中,一个 GL_ARRAY_BUFFER 和一个 GL_ELEMENT_ARRAY_BUFFER。我的目标是让它同时在 OpenGL ES 2 和 OpenGL 3.2 核心上工作。我目前正在尝试找到处理从该网格中删除形状的最佳方法,我目前的方法是定期重建整个事物,可能在后台线程上。
问题是,为了重建新的干净的网格,我需要使用 glMapBuffer 访问已写入缓冲区的顶点/索引。根据 GL_OES_mapbuffer 的文档, WRITE_ONLY_OES是“访问”唯一可接受的参数。
所以,我不认为指向那里的数据可以可靠地读取以创建我的新缓冲区。我知道 GL Core 中还有其他功能可以让您复制缓冲区数据,但这些似乎也不见了。
谁能验证这在 ES 2.0 上是不可能的,或者给出一些实现缓冲区读取的方法?我目前的解决方案是保留所有数据的卷影副本,这显然并不理想。