簡體   English   中英

頂點緩沖區對象(刪除過程)opengl

[英]Vertex Buffer Objects (Delete process) opengl

我什么時候應該打電話給glDeleteBuffersARB? 申請結束時應該做嗎? 我可以以某種方式自動執行刪除頂點緩沖區對象的過程嗎? 例如,像smart_ptr這樣的事情。

決不。 您永遠不要調用glDeleteBuffersARB 緩沖對象已成為GL的核心功能,至今已有十多年了。 如果您仍在使用ARB后綴的擴展功能,請使用STOP 如果您正在遵循使用它們的教程,請再次STOP ; 它顯然已經太舊了,無法使用。

現在,何時應使用glDeleteBuffers 您應該在delete常規C ++對象的同時使用它。 即,在完成對象時使用它。 當您不再需要它並且想要擺脫它時。

所以我可以用析構函數為vbo創建類,這將刪除vbo對象嗎? 然后創建對象作為smart_ptr來自動執行所有操作?

您可以,但不會買那么多錢。 而且,您還冒着真正的風險,等待刪除對象,直到為時已晚。

在創建OpenGL上下文(並將其設為當前)或在GL上下文不是當前(例如,銷毀GL上下文之后)之前,調用任何OpenGL函數都是非法的。 嘗試這樣做是不好的。

如果使用shared_ptr管理這些資源,則從理論上講,它們有可能超過實際的OpenGL上下文。 那很糟。 就個人而言,我更喜歡一種更嚴格的管理方案,該方案將GL對象的生存期與上下文的生存期牢固地聯系在一起。

暫無
暫無

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

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