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

Graphics.DrawMeshInstanced

建议更改

成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们不能接受所有提交,但我们会仔细阅读用户提出的每项更正建议,并视情况进行更新。

关闭

提交失败

由于某种原因,您的更正建议无法提交。请在几分钟后<a>再试一次</a>。感谢您抽出时间帮助我们提升 Unity 文档的质量。

关闭

取消

声明

public static void DrawMeshInstanced(Mesh mesh, int submeshIndex, Material material, Matrix4x4[] matrices, int count = matrices.Length, MaterialPropertyBlock properties = null, Rendering.ShadowCastingMode castShadows = ShadowCastingMode.On, bool receiveShadows = true, int layer = 0, Camera camera = null, Rendering.LightProbeUsage lightProbeUsage = LightProbeUsage.BlendProbes, LightProbeProxyVolume lightProbeProxyVolume = null);

声明

public static void DrawMeshInstanced(Mesh mesh, int submeshIndex, Material material, List<Matrix4x4> matrices, MaterialPropertyBlock properties = null, Rendering.ShadowCastingMode castShadows = ShadowCastingMode.On, bool receiveShadows = true, int layer = 0, Camera camera = null, Rendering.LightProbeUsage lightProbeUsage = LightProbeUsage.BlendProbes, LightProbeProxyVolume lightProbeProxyVolume = null);

参数

网格 要绘制的网格
子网格索引 绘制的网格的哪一部分。这仅适用于由几个材质组成的网格。
材质 要使用的材质
矩阵 对象转换矩阵数组。
计数 要绘制的实例数。
属性 要应用的其他材质属性。参见MaterialPropertyBlock
投射阴影 确定网格是否应投射阴影。
接受阴影 确定网格是否应接收阴影。
要使用的图层
摄像头 如果是 null(默认值),该网格将在所有摄像机中绘制。否则,它将仅在给定的摄像机中绘制。
lightProbeUsage LightProbeUsage 用于实例。

描述

使用 GPU 实例绘制同一网格多次。

类似于 Graphics.DrawMesh,此函数为一帧绘制网格,而无需创建不必要的游戏对象开销。此函数现在已过时。改用 Graphics.RenderMeshInstanced。在想要使用实例化着色器绘制特定次数的相同网格时,使用此函数。Unity 会将实例化的网格作为一个组进行剔除和排序。它创建一个包含所有网格的对齐轴包围盒,计算中心点,然后使用此信息来剔除和排序网格实例。请注意,在剔除和排序组合实例后,Unity 不会按视锥体或烘焙闭塞体进一步剔除单个实例。它也不会对单个实例进行排序以提高透明度或深度效率。

网格的每个实例的转换矩阵应打包到 matrices 阵列中。你可以指定要绘制的实例的数量,或者默认情况下它是 matrices 阵列的长度。如果着色器需要其他每个实例的数据,则应使用 SetFloatArraySetVectorArraySetMatrixArray 在 MaterialPropertyBlock 参数上创建阵列来提供这些数据。

要使用光照探针渲染实例,可以通过 MaterialPropertyBlock 提供光照探针数据,并使用 LightProbeUsage.CustomProvided 指定 lightProbeUsage。有关详细信息,请查看 LightProbes.CalculateInterpolatedLightAndOcclusionProbes

注意:一次最多只能绘制 1023 个实例。

如果材质没有将 Material.enableInstancing 设置为 true,或者当前平台不支持此 API(即如果 GPU 实例化不可用),则会引发 InvalidOperationException。请参阅 SystemInfo.supportsInstancing

其他资源:Graphics.DrawMeshGraphics.RenderMeshInstanced