gpt4 book ai didi

c++ - 着色器存储 block 与统一 block

转载 作者:太空狗 更新时间:2023-10-29 20:59:26 26 4
gpt4 key购买 nike

我现在读到,您不能写入统一 block ,因此着色器存储 block 比统一 block 有优势。此外,着色器存储 block 的大小(上限)要高得多。

我没有得到的是着色器存储 block 的原子操作属性,什么时候可以派上用场?有现实生活中的例子吗?

此外,我什么时候更喜欢其中之一?

最佳答案

我认为你的问题是不恰当的。听起来您正在尝试找出统一缓冲区和着色器存储缓冲区之间的区别。 block 只是一种组织着色器输入和输出的方式。

如您所述,统一缓冲区和着色器存储缓冲区之间的最大区别是您可以从着色器程序写入着色器存储缓冲区。

询问为什么写入 ssbo 很方便就像询问为什么变量很方便。任何时候您想要在渲染 channel 之间累积结果或共享数据,您都可以将 ssbo 用作“暂存存储器”。

在过去(我相信)如果你想共享数据,你将不得不对纹理进行渲染,并且这将通过整个图形管道以及随之而来的所有成本。

更多关于统一缓冲区对象的信息:

https://www.opengl.org/wiki/Shader_Storage_Buffer_Object

要真正确保您理解其中的区别,请查看按时间顺序为着色器提供数据的各种方法:

  • 纹理和帧缓冲对象
  • 制服
  • 统一缓冲对象
  • 纹理缓冲对象
  • 带有图像加载/存储的纹理
  • 着色器存储缓冲区对象

SO 上的这个答案对几乎所有这些问题都有一个很好的概述:

Passing a list of values to fragment shader

关于c++ - 着色器存储 block 与统一 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24693094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com