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

Graphics.RenderMesh

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static void RenderMesh(ref RenderParams rparams, Mesh mesh, int submeshIndex, Matrix4x4 objectToWorld, Nullable<Matrix4x4> prevObjectToWorld = null);

参数

rparams Unity 用于渲染网格的参数。
mesh 要渲染的Mesh
submeshIndex 当网格包含多个材质(子网格)时,Unity 渲染子网格的索引。对于具有单个材质的网格,请使用值 0。
objectToWorld Unity 用于将网格从对象空间转换为世界空间的变换矩阵。
prevObjectToWorld Unity 用于计算网格运动矢量的上一帧变换矩阵。

描述

使用给定的渲染参数渲染网格。

RenderMesh 渲染当前帧的网格。该网格受灯光影响,可以投射和接收阴影,并且受投影仪影响。该网格可以被所有摄像机渲染,也可以被特定摄像机渲染。

使用 RenderMesh 以编程方式控制网格渲染,而无需创建和管理游戏对象。 RenderMesh 提交网格进行渲染,这意味着它不会立即渲染网格。Unity 会将网格作为正常渲染过程的一部分进行渲染。如果您想立即渲染网格,请使用 Graphics.DrawMeshNow

RenderMesh 不会应用对网格材质属性的任何更改,这些更改是在调用之间进行的。这是因为它不会立即渲染网格。如果您想渲染一系列具有相同材质但属性略有不同的网格(例如,要更改每个网格的颜色),请使用 MaterialPropertyBlock 参数。

此调用在网格位于渲染队列中时创建内部资源。分配会立即发生,并且在帧结束之前一直存在,前提是该对象对所有摄像机都在渲染队列中。否则,分配将一直存在,直到指定的摄像机完成渲染。

其他资源: MaterialPropertyBlock

以下示例渲染 10 个具有给定材质的网格

using UnityEngine;

public class ExampleClass : MonoBehaviour { public Material material; public Mesh mesh;

void Update() { RenderParams rp = new RenderParams(material); for(int i=0; i<10; ++i) Graphics.RenderMesh(rp, mesh, 0, Matrix4x4.Translate(new Vector3(-4.5f+i, 0.0f, 5.0f))); } }