使用缓冲区作为着色器存储缓冲区然后作为原子计数器缓冲区是否好?

时间:2016-12-24 12:49:49

标签: opengl glsl

我使用的原子计数器有自己的缓冲区,我希望在其他一些传递中清除该计数器。将缓冲区绑定为着色器存储缓冲区以清除它然后,在第二遍中使用它作为原子计数器缓冲区是不是很好?另外我想问一下,在同一个着色器中是否可以同时使用相同的缓冲区作为着色器存储缓冲区和原子计数器缓冲区,让我们说,开始时的4个字节是仅用于原子计数器,而在同一缓冲区中则是读取/修改的其他数据。

1 个答案:

答案 0 :(得分:2)

您可以使用具有不同目标的相同缓冲区,但您必须自己管理对齐要求(glGet的所有参数名称中都包含ALIGNMENT

然后,您可以使用InvalidateBufferSubData作为效果提示无效的范围(GPU不必保留您将要清除的内容)并使用ClearBufferSubData清除范围。

为了获得更好的性能,我建议对原子计数器或经常清除或更新的任何数据使用双缓冲或三缓冲。

相关问题