如何从 CPU 访问计算着色器本地工作组的大小?

How can I access the size of a Compute Shader's local work group from the CPU?

本文关键字:工作组 CPU 访问 计算      更新时间:2023-10-16

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

四处寻找后,我在 Khronos.org 上找到了以下内容,在其有关glGetProgramiv的页面上,在这里找到:

https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml

GL_COMPUTE_WORK_GROUP_SIZE params 返回一个由三个整数组成的数组,其中包含计算程序的本地工作组大小,由其输入布局限定符指定。程序必须是先前已成功链接的程序对象的名称,并且包含计算着色器阶段的二进制文件。

这使得我需要的线路

glGetProgramiv(ComputeShaderID, GL_COMPUTE_WORK_GROUP_SIZE, localWorkGroupSize);

其中localWorkGroupSize是一个由 3 个整数组成的数组。