-1
是否有任何方法可以爲OpenGL中的GL_ELEMENT_ARRAY_BUFFER保留內存,例如Cuda中的std :: vector或thrust :: device_vector的.reserved(int)?假設我在frame1上有200個三角形(600個索引),但frame2上有250個全新的三角形(750個索引)。我如何在開始時預留一次並在每一幀更新它?OpenGL中的保留內存
是否有任何方法可以爲OpenGL中的GL_ELEMENT_ARRAY_BUFFER保留內存,例如Cuda中的std :: vector或thrust :: device_vector的.reserved(int)?假設我在frame1上有200個三角形(600個索引),但frame2上有250個全新的三角形(750個索引)。我如何在開始時預留一次並在每一幀更新它?OpenGL中的保留內存
一旦你分配了一個緩衝區對象,並且調用了一個glBufferData()
,那麼將分配回它的內存。您可以將空數據指針傳遞給第一個glBufferData()
調用,以創建一個沒有數據上傳的只分配緩衝區。
您可以使用glBufferSubData()
修補現有緩衝區而無需重新分配,但只要確保不嘗試修補仍在現有繪製調用中引用的緩衝區。請參閱...
瞭解更多詳情。
謝謝,但它似乎像運行時間增加時,我保留更多的內存,雖然繪製相同數量的點。 – huyluu11
你確定你確實足夠管道資源更新(例如,不要更新仍然被繪圖引用的緩衝區)嗎?如果你的流水線不夠深,那麼資源重影一個更大的緩衝區會減慢速度(更多的內存分配,更多的副本)。 – solidpixel