给定一个计算着色器,我将每个维度的本地大小设置为值x,y和z,我有什么方法可以从c ++代码中访问该信息?即,
//Pseudo Code c++
int size[3]
x = get local sizes from linked compute shader
print(x);
//GLSL Code
layout (local_size_x = a number, local_size_y = a number, local_size_z = a number) in;
答案 0 :(得分:2)
看了之后,我在Khronos.org上找到了关于glGetProgramiv
的页面上的以下内容:
https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml
GL_COMPUTE_WORK_GROUP_SIZE params返回一个包含三个整数的数组,这三个整数包含由其输入布局限定符指定的计算程序的本地工作组大小。 program必须是先前已成功链接的程序对象的名称,并且包含计算着色器阶段的二进制文件。
这就是我需要的行
glGetProgramiv(ComputeShaderID, GL_COMPUTE_WORK_GROUP_SIZE, localWorkGroupSize);
其中localWorkGroupSize
是一个包含3个整数的数组。