kernelIndex | 要执行的内核。单个计算着色器资源可以有多个内核入口点。 |
argsBuffer | 包含调度参数的缓冲区。 |
argsOffset | 缓冲区中绘制参数开始处的字节偏移量。 |
执行计算着色器。
此函数“运行”计算着色器,其工作大小直接从 GPU 读取。典型用例是从 ComputeShader 生成任意数量的数据,然后调度这些数据,而无需回读到 CPU。
包含参数的缓冲区,argsBuffer
,必须在给定的 argsOffset
偏移量处具有三个整数:X 维度中的工作组数量、Y 维度中的工作组数量、Z 维度中的工作组数量。
在每个工作组内,执行一定数量的着色器调用(“线程”)。工作组大小在计算着色器本身中指定(使用“numthreads” HLSL 属性),因此,计算着色器调用的总数是组计数乘以线程组大小。可以使用 GetKernelThreadGroupSizes 函数查询工作组大小。
这与 Direct3D11 DispatchIndirect、OpenGL glDispatchComputeIndirect 以及其他图形 API 上的等效函数非常相似。
其他资源:Dispatch,Graphics.DrawProceduralIndirect,ComputeBuffer.CopyCount,计算着色器。