简单的 UBO(Uniform Buffer Object) 【修订补充】【OpenGL】【GLSL】

网友投稿 1300 2022-05-29

一、引入 Uniform Buffer Object / Uniform Block 的 原因

1)  如果程序涉及了多个 Shader 程序,而且它们使用同一个Uniform 变量,那么你不得不为每个 Shader 程序单独管理它们。当一个程序被链接时,OpenGL 会自动生成 Uniform 的位置,因此对于不同的 Shader 程序,同一个 Uniform 变量的位置可能是不一样的。而 Uniform Blocks 就是为了方便我们管理 Shader 之间共享的 Uniform 变量。

最简单的 UBO(Uniform Buffer Object) 【修订补充】【OpenGL】【GLSL】

通过一个 Uniform Block 对象,我们可以创建一个缓冲区用于存储所有的 Uniform 变量,然后把这个缓冲区绑定到 Uniform bBock 上。这样,当我们需要改变使用的 Shader 程序时,只需要再重新把 Uniform Block 绑定到新的 Shader 程序就可以了。【摘自《【OpenGL】向Shader中传递数据》】

2)有多个相同的 Uniform 变量,需要统一管理

二、UBO 的优点

UBO 缓冲区是发送数据“结构体”的一种更有组织的方式

如果发送相同的数据到多个着色器,UBO 可以显著减少代码,优化 Uniform 变量的访问,

OpenGL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2021-08-24 网安实验-Web渗透测试之DoraBox(CSRF攻击)
下一篇:K8S集群中Pod资源常见的异常状态以及排查思路
相关文章