2012-07-05 126 views
2

我試圖製作一個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或給一些方法來實現緩衝區讀取?我目前的解決方案是保留所有數據的影子副本,這顯然不理想。

回答

0

我認爲在主內存中保留GPU數據的影子副本要比從GPU內存讀取這些數據要好得多。無論如何,建議在使用glMapBuffer之前丟棄先前的數據。閱讀this瞭解更多信息(它不會給你直接的答案,但它可能是有用的)。

+0

感謝您的建議 - 當您特別請求(儘管沒有選項)只寫訪問時,對於從映射緩衝區讀取數據的感覺是一樣的。然而,我不認爲這個鏈接是非常相關的,因爲我正在尋找一種方法來閱讀或複製一個VBO,並且這個帖子與各種方式的寫作速度有關。 –

相關問題