版本: Unity 6 (6000.0)
语言英语
  • C#

ComputeShader.DispatchIndirect

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读来自用户的所有建议更改,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

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计算着色器