OpenGL的工作组大小和本地大小之间有什么区别?

问题描述

我很难理解两者的实际区别。 假设我已将我的local_size定义如下:

layout(local_size_x = 32,local_size_y = 32,local_size_z = 1)in;

现在我打电话给

gldispatchCompute(1,1,1);

如果我没记错的话,这将导致int 32 * 32 * 1着色器调用。 所以,这有什么区别:

layout(local_size_x = 1,local_size_y = 1,local_size_z = 1)in;

并且:

gldispatchCompute(32,32,1);

解决方法

最明显的区别可能是在工作组中跨调用对shared variables的支持。与工作组相比,工作组中的所有调用都被称为并行运行。通常,这主要是关于您的代码如何映射到硬件及其与之交互的能力。