Graphics.RenderMesh
Declaration
public static void RenderMesh(ref RenderParams rparams, Mesh mesh, int submeshIndex, Matrix4x4 objectToWorld, Nullable<Matrix4x4> prevObjectToWorld = null);Параметры
| Параметр | Описание |
|---|---|
| рпарам | Параметры, используемые Unity для отображения сетки. |
| сетка | Mesh для рендеринга. |
| submeshIndex | Индекс подсетки Unity отображается, когда сетка содержит несколько Материалов (подсеток). Для сетки с одним Материалом используйте значение 0. |
| objectToWorld | Матрица преобразования Unity используется для преобразования сетки из объекта в мировое пространство. |
| prevObjectToWorld | Матрица преобразования кадра Unity используется для вычисления вектора движения для сетки. |
Описание
Отображает сетку с заданными параметрами отображения.
RenderMesh рендирует сетку для текущего кадра. На эту сетку влияет освещение, она может отбрасывать и принимать тени, и на неё влияют проекторы. Эта сетка может быть рендирована всеми камерами или определенным Camera.
Использование RenderMesh для программного управления рендерингом Mesh без необходимости создания и управления GameObjects. 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))); } }