查询着色器中声明的 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)
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)