opengl 查询着色器中声明的local_size值[duplicate]

i34xakig  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(106)

此问题在此处已有答案

How can I access the size of a Compute Shader's local work group from the CPU?(1个答案)
7个月前关闭。
OpenGL计算着色器使用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值。

hgncfbus

hgncfbus1#

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

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

相关问题