如何从CPU访问Compute Shader的本地工作组的大小?

时间:2017-07-31 12:53:09

标签: c++ opengl compute-shader

给定一个计算着色器,我将每个维度的本地大小设置为值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;

1 个答案:

答案 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个整数的数组。