着色器中最快的写入内存是什么?

时间:2018-06-11 05:13:41

标签: opengl memory optimization glsl

本地存储在着色程序执行后将被丢弃的信息的选项包括:

  • C like memory declarations:example,int array[100]; in global 范围。
  • 纹理
  • SSBOs

可能还有其他我不知道的事情。

编辑:

每个着色器都可以处理自己的数据,这是在正常的渲染管道上。

考虑到程序结束后数据将被丢弃,其中哪一项将提供最快的访问权限。每个片段都与其他片段无关(它们不需要共享数据)。

1 个答案:

答案 0 :(得分:2)

如果您声明的数组不是太大,着色器中的局部或全局变量(类C)将是最快的。这些变量存储在寄存器或与着色器单元最近(最快)的存储器中。

您提到的其他选项(纹理和SSBO)都使用较慢的内存。它们适用于不同着色器或着色器调用可见的数据。如果您使用的执行数据太大而无法放入常规变量,则它们可以提供后备“临时空间”。但预计性能要慢很多。

此外,既然你问了这个问题,我很想知道你正在使用哪种算法需要这么多临时存储。