簡體   English   中英

何時清除頂點緩沖區對象

[英]When to clear a vertex buffer object

我只是在想:什么時候(也許怎么)從VBO清除數據。 您是否必須始終在重寫數據之前清除它? 為什么要清除它?

清除緩沖區(即將每個字節設置為0)不是太有用。 使緩沖區無效

使緩沖區的某個部分無效意味着該部分的內容變為無效,並且必須在使用該部分之前將新內容寫入該部分。 通過為您提供一個完全“新”的緩沖區來寫入(以相同的名稱),這使得OpenGL實現可以避免等到不再使用緩沖區對象以向其上載數據時再等待。 此技術稱為緩沖區孤立

無效的緩沖區,你可以調用glBufferData具有相同的大小和使用提示,但有一個NULL數據指針,使用glMapBufferRangeGL_MAP_INVALIDATE_BUFFER_BIT ,或glInvalidateBufferData如果你的GPU支持它。

OpenGL Wiki上有關緩沖區對象流的文章更加詳細地介紹了這一點,並且還提供了其他幾種解決方案。

要直接回答您的問題,不需要在更新緩沖區之前使它無效或清除它。 每當您要更新所需的任何內容時,都可以調用glBufferSubData 但是,這樣做會導致管道停頓,因為OpenGL在安全更新緩沖區之前等待緩沖區使用完畢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM