语言英语
  • C#

图形.DrawProceduralIndirect

声明

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


Did you find this page useful? Please give it a rating: