OpenGL:SSBO vs" Buffer Texture" vs" PBO / Texture"提供计算着色器

时间:2016-05-26 08:03:15

标签: opengl

我需要将浮动数据提供给计算着色器。

我看到的三种方式是:

  • 着色器存储缓冲区对象
  • 缓冲纹理
  • '经典'纹理(使用PBO将数据上传到GPU,然后使用glTexSubImage2D将数据复制到纹理)并作为' image2D'进行访问。在着色器中

每项技术的优缺点/表现是什么?

我不需要过滤,我只需要访问原始浮点数据。由于SSBO和缓冲区纹理是1D,这意味着如果我的数据是' 2D',我需要自己计算偏移量。

1 个答案:

答案 0 :(得分:-1)

  • 缓冲纹理 - 无用
  • 纹理 - 如果你的数据是矩阵类型并且可以适合4通道浮点数它可能比纯缓冲区快一点,你可以利用textureGather和纹理过滤等功能
  • 图像 - 像纹理,但没有采样器
  • SSBO - 通用解决方案,与图像性能相同,您仍然可以将2D数组放入缓冲区并将索引设置为data[y][x]