Version: 2021.3

ComputeShader.DispatchIndirect

切换到手册
public void DispatchIndirect (int kernelIndex, ComputeBuffer argsBuffer, uint argsOffset= 0);
public void DispatchIndirect (int kernelIndex, GraphicsBuffer argsBuffer, uint argsOffset= 0);

参数

kernelIndex 要执行的内核。单个计算着色器资源可具有多个内核入口点。
argsBuffer 具有分发参数的缓冲区。
argsOffset 缓冲区中的字节偏移,绘制参数起始位置。

描述

执行计算着色器。

此函数“运行”该计算着色器,给定工作大小是从 GPU 直接读取的。典型的用例是从 ComputeShader 中生成任意数量的数据,然后分发这些数据,无需回读 CPU。

具有参数 argsBuffer 的缓冲区必须以给定的 argsOffset 偏移获得三个整数: X 尺寸中的工作组数、Y 尺寸中的工作组数、Z 尺寸中的工作组数。

在每个工作组中均进行了一定数量的着色器调用(“线程”)。该工作组 大小是在计算着色器本身中指定的(使用“numthreads”HLSL 属性),因此计算着色器 调用的总数是组数乘以线程组大小。 可使用 GetKernelThreadGroupSizes 函数查询工作组的大小。

它们直接映射到 Direct3D11 DispatchIndirect、OpenGL glDispatchComputeIndirect 以及其他图形 API 上的等同函数。

另请参阅:DispatchGraphics.DrawProceduralIndirectComputeBuffer.CopyCount计算着色器