【发布时间】:2019-05-10 11:15:02
【问题描述】:
引用here:
当此函数返回时,使用调用之前执行的一致变量执行的任何内存存储的结果将对来自其他着色器调用的相同地址的任何未来一致内存访问可见。
好的,假设我想在片段着色器中执行此操作:
void main() {
ivec2 fc = ivec2(gl_FragCoord.xy);
vec4 f = imageLoad(image, fc);
f *= 2;
imageStore(image, fc, f);
}
我相信这不需要 imageLoad 和 imageStore 之间的 memoryBarrier()。以下是:
out vec4 OUT;
void main() {
ivec2 fc = ivec2(gl_FragCoord.xy);
imageStore(image, fc, vec4(5));
vec4 f = imageLoad(image, fc);
OUT = f * 2;
}
我是否正确理解了 GLSL 的 memoryBarrier?
【问题讨论】:
-
"我相信这不需要 imageLoad 和 imageStore 之间的 memoryBarrier()。" 这里的情况是什么?是否涉及重叠调用?多个调用能否获得相同的
fc值? -
@NicolBolas:您能为我定义“重叠调用”吗?另外,我编辑了问题以包含
fc的定义。
标签: opengl synchronization glsl