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

图形.DrawProceduralIndirect

提出更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但的确会阅读用户提出的每条更改建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,无法提交您的更改建议。请在几分钟内再试。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void DrawProceduralIndirect(材质 材质, 边界 边界, 网格拓扑结构 拓扑结构, 图解缓冲 带有参数的缓冲区, int 参数偏移量, 相机 相机, 材质属性块 属性, Rendering.ShadowCastingMode 投射阴影, bool 接受阴影, int 图层);

声明

public static void DrawProceduralIndirect(材质 材质, 边界 边界, 网格拓扑结构 拓扑结构, 计算缓冲 带有参数的缓冲区, int 参数偏移量, 相机 相机, 材质属性块 属性, Rendering.ShadowCastingMode 投射阴影, bool 接受阴影, int 图层);

参数

材质 要使用的材质
边界 包围您打算绘制的实例的边界包围体。
拓扑结构 过程几何体的拓扑结构。
相机 如果为null(默认),该网格将在所有摄像机中绘制。否则将仅在给定的摄像机中渲染。
带有参数的缓冲区 带有绘制参数的缓冲区。
参数偏移量 缓冲区中绘制参数所在的字节偏移量。
属性 在本网格绘制之前添加到材质上的其他材质属性。请参阅 MaterialPropertyBlock
投射阴影 确定网格是否可以投射阴影。
接受阴影 确定网格是否可以接收阴影。
图层 用于。

说明

在 GPU 上绘制程序几何。

此函数已过时。对于非索引渲染,请改用 RenderPrimitivesIndirect。对于索引渲染,请改用 RenderPrimitivesIndexedIndirect。

此函数仅适用于支持 计算着色器 的平台。

DrawProceduralIndirect 在 GPU 上执行绘制调用,不使用任何顶点或索引缓冲区。如果着色器需要顶点缓冲区,将根据平台发生以下情况:如果声明了顶点缓冲区,但编译器可以对其进行优化,则会执行常规的 DrawProcedural 调用。如果编译器无法优化顶点缓冲区的声明,则它将被转换为一个常规的网格绘制调用,并插入模拟的顶点缓冲区。后者选项具有性能开销,因此建议在使用 DrawProceduralIndirect 时不要在着色器中声明顶点输入。要绘制的几何量从 ComputeBuffer 读取。典型用例是在 ComputeShader 中生成任意数量的数据,然后渲染该数据,而不需要读回 CPU。

这主要适用于 着色器模型 4.5 级别硬件,其中着色器可以从 ComputeBuffer 缓冲区读取任意数据。

带有参数的缓冲区 bufferWithArgs 必须在给定的 argsOffset 偏移处具有四个整数:每个实例的顶点数、实例数、起始顶点位置和起始实例位置。这映射到 Direct3D11 DrawInstancedIndirect 和其他图形 API 上的等效函数。在 OpenGL 4.2 之前的版本和所有支持间接绘制的 OpenGL ES 版本中,最后一个参数是保留的,因此必须为零。

CommandBuffer 中还有类似的功能,请参阅 CommandBuffer.DrawProceduralIndirect

其他资源: Graphics.RenderPrimitivesIndirectGraphics.RenderPrimitivesIndexedIndirectGraphics.DrawProceduralComputeBuffer.CopyCountSystemInfo.supportsComputeShaders


声明

public static void DrawProceduralIndirect(Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer indexBuffer, GraphicsBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

声明

public static void DrawProceduralIndirect(Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer indexBuffer, ComputeBuffer bufferWithArgs, int argsOffset, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

参数

材质 要使用的材质
边界 包围您打算绘制的实例的边界包围体。
拓扑结构 过程几何体的拓扑结构。
indexBuffer 用于向 GPU 提交顶点的索引缓冲区。
相机 如果为null(默认),该网格将在所有摄像机中绘制。否则将仅在给定的摄像机中渲染。
带有参数的缓冲区 带有绘制参数的缓冲区。
参数偏移量 缓冲区中绘制参数所在的字节偏移量。
属性 在本网格绘制之前添加到材质上的其他材质属性。请参阅 MaterialPropertyBlock
投射阴影 确定网格是否可以投射阴影。
接受阴影 确定网格是否可以接收阴影。
图层 用于。

说明

在 GPU 上绘制程序几何。

DrawProceduralIndirect 在 GPU 上执行一个绘图调用,没有顶点缓冲区。要绘制的几何体量从 ComputeBuffer 中读取。典型用例是从 ComputeShader 生成任意量的数据,然后进行渲染,而不需要读回 CPU。

这主要适用于 着色器模型 4.5 级别硬件,其中着色器可以从 ComputeBuffer 缓冲区读取任意数据。

带有参数的缓冲区 bufferWithArgs 必须在给定的 argsOffset 偏移量处具有五个整数:每个实例的索引计数、实例计数、开始索引位置、基本顶点位置和开始实例位置。这映射到 Direct3D11 DrawIndexedInstancedIndirect 和其他图形 API 上的同等函数。在 4.2 之前的 OpenGL 版本和所有支持间接绘制的 OpenGL ES 版本上,最后一个参数是保留的,因此必须为零。

CommandBuffer 中还有类似的功能,请参阅 CommandBuffer.DrawProceduralIndirect

其他资源:Graphics.DrawProceduralComputeBuffer.CopyCountSystemInfo.supportsComputeShaders