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

Graphics.DrawProcedural

建议更改

成功!

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

关闭

提交失败

由于某些原因,您建议的更改无法提交。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提升 Unity 文档的品质。

关闭

取消

声明

public static void DrawProcedural(Material material, Bounds bounds, MeshTopology topology, int vertexCount, int instanceCount, Camera camera, MaterialPropertyBlock properties, Rendering.ShadowCastingMode castShadows, bool receiveShadows, int layer);

参数

材质 材质
绑定 包围你打算绘制的实例的包围体。
拓扑 过程几何的拓扑。
vertexCount 渲染的顶点数。
instanceCount 渲染的实例数。
camera 如果为 null(默认值),该网格将绘制在所有摄像机中。否则,它将仅在给定的摄像机中渲染。
properties 准备绘制该网格之前,要应用到材质的附加材质属性。请参见 MaterialPropertyBlock
castShadows 确定网格是否可以投射阴影。
receiveShadows 确定网格是否可以接收阴影。
layer 图层

说明

此函数现已废弃。对于非索引渲染,请改用 Graphics.RenderPrimitives。对于索引渲染,请使用 Graphics.RenderPrimitivesIndexed。在 GPU 上绘制过程几何。

此函数现已废弃。对于非索引渲染,请改用 RenderPrimitives。对于索引渲染,请使用 Graphics.RenderPrimitivesIndexed

DrawProcedural 在没有顶点或索引缓冲区的情况下在 GPU 上调用 Draw。如果着色器需要顶点缓冲区,则会根据平台发生以下情况:如果已声明顶点缓冲区但编译器能够优化它,则会发生正常的 DrawProcedural 调用。如果编译器无法优化顶点缓冲区声明,则这会转换成使用模拟的顶点缓冲区注入后的正常网格绘制调用。后一种选择具有性能开销,因此在使用 DrawProcedural 时不建议在着色器中声明顶点输入。这主要适用于 着色器模型 4.5 级硬件,在该硬件中,着色器可以从 ComputeBuffer 缓冲区读取任意数据。

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

对于非索引渲染: public static void DrawProcedural(Material material, Bounds bounds, MeshTopology topology, int vertexCount, int instanceCount = 1, Camera camera = null, MaterialPropertyBlock properties = null, ShadowCastingMode castShadows = ShadowCastingMode.On, bool receiveShadows = true, int layer = 0)

对于索引渲染(使用 GraphicsBuffer 索引缓冲区): public static void DrawProcedural(Material material, Bounds bounds, MeshTopology topology, GraphicsBuffer indexBuffer, int indexCount, int instanceCount = 1, Camera camera = null, MaterialPropertyBlock properties = null, ShadowCastingMode castShadows = ShadowCastingMode.On, bool receiveShadows = true, int layer = 0)

其他资源: Graphics.RenderPrimitivesGraphics.RenderPrimitivesIndexedGraphics.DrawProceduralIndirectSystemInfo.supportsInstancing


声明

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

参数

材质 材质
绑定 包围你打算绘制的实例的包围体。
拓扑 过程几何的拓扑。
indexBuffer 用于将顶点提交给 GPU 的索引缓冲区。
instanceCount 渲染的实例数。
indexCount 要渲染的索引数量。
camera 如果为 null(默认值),该网格将绘制在所有摄像机中。否则,它将仅在给定的摄像机中渲染。
properties 准备绘制该网格之前,要应用到材质的附加材质属性。请参见 MaterialPropertyBlock
castShadows 确定网格是否可以投射阴影。
receiveShadows 确定网格是否可以接收阴影。
layer 图层

说明

使用索引缓冲区在 GPU 上绘制过程几何体。

使用 GraphicsBuffer.Target.Index 目标标记来创建索引缓冲区。