我试图制作一个OpenGL渲染器,将各种形状混合成一个大网格,并将它们存储在两个VBO,一个GL_ARRAY_BUFFER和一个GL_ELEMENT_ARRAY_BUFFER中。我的目标是在OpenGL ES 2和OpenGL 3.2内核上工作。我目前正试图找到处理这个网格中删除形状的最佳方法,而我目前的方法是定期重建整个事物,可能是在后台线程上。是否可以从VBO读取?
问题是,为了重建新的和干净的网格,我需要访问使用glMapBuffer写入缓冲区的顶点/索引。根据GL_OES_mapbuffer的文档,WRITE_ONLY_OES是“访问”唯一可接受的参数。
所以,我不认为数据指出有可靠的读取,以创建我的新缓冲区。我知道GL核心中还有其他功能可以让您复制缓冲区数据,但这些功能似乎也不存在。
任何人都可以验证这是不可能在ES 2.0或给一些方法来实现缓冲区读取?我目前的解决方案是保留所有数据的影子副本,这显然不理想。
感谢您的建议 - 当您特别请求(尽管没有选项)只写访问时,对于从映射缓冲区读取数据的感觉是一样的。然而,我不认为这个链接是非常相关的,因为我正在寻找一种方法来阅读或复制一个VBO,并且这个帖子与各种方式的写作速度有关。 –