查询着色器中声明的 local_size 值

Query the local_size values declared in a shader

OpenGL Compute Shader 使用 local_size 行声明它们的预期工作组大小

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

稍后,执行着色器的 C++ 程序将调用 glDispatchCompute

glDispatchCompute(numWorkItems / workGroupSize, 1, 1);

其中 workGroupSize 应该正好是 128,否则会发生不好的事情。这意味着修改着色器源代码也需要修改 C++。

问题是在编译并链接到 glProgram 之后,是否有办法查询着色器中声明的值。当然,我知道调用 glAttachShader(programID, shaderID); 函数时使用的 GLuint 值。

GLint local_size[3];
glGetProgram(program, GL_COMPUTE_WORK_GROUP_SIZE, &local_size);

(https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgram.xhtml)