【发布时间】:2019-06-10 06:44:35
【问题描述】:
我的代码如下所示:
uint ssboId;
glGenBuffers(1, &ssboId);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssboId);
//initialize
glBufferData(GL_SHADER_STORAGE_BUFFER, size, 0, GL_STATIC_DRAW);
// memory barrier here?
// glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
//start writes
glBufferSubData(GL_SHADER_STORAGE_BUFFER, offset1, sourceSize1, data1);
glBufferSubData(GL_SHADER_STORAGE_BUFFER, offset2, sourceSize2, data2);
...
// Ensure changes are applied before shader grabs it.
glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
是否需要取消注释 glBufferData 和 glBufferSubData 之间的 glMemoryBarrier 调用?如果SSBO的东西不连贯,难道glBufferSubData会在glBufferData之前通过,从而崩溃吗?
我的应用程序正在运行,但我不确定它是否只是侥幸。
【问题讨论】:
标签: opengl opengl-4 shader-storage-buffer