最簡單的 UBO(Uniform Buffer Object) 【修訂補充】【OpenGL】【GLSL】
一、引入 Uniform Buffer Object / Uniform Block 的 原因
1) ?如果程序涉及了多個 Shader 程序,而且它們使用同一個Uniform 變量,那么你不得不為每個 Shader 程序單獨管理它們。當一個程序被鏈接時,OpenGL 會自動生成 Uniform 的位置,因此對于不同的 Shader 程序,同一個 Uniform 變量的位置可能是不一樣的。而 Uniform Blocks 就是為了方便我們管理 Shader 之間共享的 Uniform 變量。
通過一個 Uniform Block 對象,我們可以創建一個緩沖區用于存儲所有的 Uniform 變量,然后把這個緩沖區綁定到 Uniform bBock 上。這樣,當我們需要改變使用的 Shader 程序時,只需要再重新把 Uniform Block 綁定到新的 Shader 程序就可以了。【摘自《【OpenGL】向Shader中傳遞數據》】
2)有多個相同的 Uniform 變量,需要統一管理
二、UBO 的優點
UBO 緩沖區是發送數據“結構體”的一種更有組織的方式
如果發送相同的數據到多個著色器,UBO 可以顯著減少代碼,優化?Uniform 變量的訪問,
OpenGL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。