Руководство API скрипты

GL

класс в UnityEngine / Реализовано в: UnityEngine.CoreModule

Описание

Низкоуровневая графическая библиотека.

Используйте этот класс для управления активными матрицами преобразования, выполнения команд рендеринга, аналогичных непосредственному режиму OpenGL, и выполнения других низкоуровневых графических задач. Обратите внимание, что почти во всех случаях использование Graphics.DrawMesh или CommandBuffer более эффективен, чем использование немедленного режима рисования.

Функции немедленного рисования GL используют любой «текущий материал», настроенный прямо сейчас (см. Material.SetPass). Материал управляет тем, как выполняется рендеринг (смешивание, текстуры и т. д.), поэтому, если вы явно не установите что-то перед использованием функций рисования GL, материал может оказаться чем угодно. Кроме того, если вы вызываете какие-либо другие команды рисования из кода рисования GL, они могут установить материал на что-то другое, поэтому убедитесь, что он также находится под контролем.

Команды рисования GL выполняются немедленно. Это означает, что если вы вызовете их в Update(), они будут выполнены до того, как камера отобразится (и камера, скорее всего, очистит экран, сделав рисунок GL невидимым).

Обычно вызов GL-отрисовки чаще всего происходит в OnPostRender() из скрипта, прикрепленного к камере, или внутри функции эффекта изображения (OnRenderImage).

using UnityEngine;

public class ExampleClass : MonoBehaviour { // При добавлении к объекту рисует цветные лучи от // трансформируем позицию. public int lineCount = 100; public float radius = 3.0f;

static Material lineMaterial; static void CreateLineMaterial() { if (!lineMaterial) { // В Unity есть встроенный шейдер, полезный для рисования // простые цветные вещи. Shader shader = Shader.Find("Hidden/Internal-Colored"); lineMaterial = new Material(shader); lineMaterial.hideFlags = HideFlags.HideAndDontSave; // Включаем альфа-смешивание lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); // Отключаем отсечение обратной стороны lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off); // Отключить запись глубины lineMaterial.SetInt("_ZWrite", 0); } }

// Будет вызываться после завершения обычного рендеринга public void OnRenderObject() { CreateLineMaterial(); // Применяем материал линии lineMaterial.SetPass(0);

GL.PushMatrix(); // Установить матрицу преобразования для рисования в // соответствует нашему преобразованию GL.MultMatrix(transform.localToWorldMatrix);

// Draw lines GL.Begin(GL.LINES); for (int i = 0; i < lineCount; ++i) { float a = i / (float)lineCount; float angle = a * Mathf.PI * 2; // Vertex colors change from red to green GL.Color(new Color(a, 1 - a, 0, 0.8F)); // Одна вершина в позиции трансформации GL.Vertex3(0, 0, 0); // Другая вершина на краю круга GL.Vertex3(Mathf.Cos(angle) * radius, Mathf.Sin(angle) * radius, 0); } GL.End(); GL.PopMatrix(); } }

Примечание. Этот класс почти всегда используется, когда вам нужно нарисовать пару линий или треугольников, и вы не хотите иметь дело с сетками. Если вы хотите избежать неожиданностей, схема использования такова:

using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour { void OnPostRender() { // Установите ваши материалы GL.PushMatrix(); // yourMaterial.SetPass( ); // Нарисуй свой материал GL.PopMatrix(); } }

Где в «// Нарисуй свой материал» вы должны сделать SetPass() на каком-то ранее объявленном материале, который будет использоваться для рисования. Если вы не вызовете SetPass, вы получите в основном случайный материал (независимо от того, что использовалось ранее), что не очень хорошо.

Статические Свойства

invertCulling Указывает, следует ли инвертировать отбраковку обратной стороны (true) или нет (false).
LINE_STRIP Режим для начала: рисование линейной полосы.
LINES Режим начала: рисовать линии.
modelview Получает или задает матрицу представления модели.
QUADS Начальный режим: рисование четырехугольников.
sRGBWrite Определяет, выполняется ли преобразование линейного цвета в sRGB при рендеринге.
TRIANGLE_STRIP Режим начала: рисование треугольной полосы.
TRIANGLES Режим начала: рисование треугольников.
wireframe Должен ли рендеринг выполняться в каркасном виде?

Статические Методы

Begin Начинает рисовать 3D-примитивы.
Clear Очищает текущий буфер рендеринга.
ClearWithSkybox Очищает текущий буфер рендеринга с помощью скайбокса камеры.
Color Устанавливает текущий цвет вершины.
End Завершает рисование 3D-примитивов.
Flush Отправляет поставленные в очередь команды в буфере команд драйвера на GPU.
GetGPUProjectionMatrix Вычисляет матрицу проекции графического процессора на основе матрицы проекции камеры.
InvalidateState Сделает недействительным внутреннее кэшированное состояние рендеринга.
IssuePluginEvent Отправляет определяемое пользователем событие в подключаемый модуль собственного кода.
LoadIdentity Загрузка идентификатора в текущую модель и просмотреть матрицы.
LoadOrtho Вспомогательная функция для настройки ортогональной проекции.
LoadPixelMatrix Настраивает матрицу для рендеринга с точностью до пикселя.
LoadProjectionMatrix Загружает произвольную матрицу в текущую матрицу проекции.
MultiTexCoord Устанавливает текущую координату текстуры (v.x,v.y,v.z) в фактическую текстурную единицу.
MultiTexCoord2 Устанавливает текущую координату текстуры (x,y) для фактического блока текстуры.
MultiTexCoord3 Устанавливает текущую координату текстуры (x,y,z) в фактическую текстурную единицу.
MultMatrix Устанавливает текущую матрицу модели на указанную.
PopMatrix Восстанавливает модели, представления и матрицы проекций с вершины стека матриц.
PushMatrix Сохраняет модели, представления и матрицы проекций в верхней части стека матриц.
RenderTargetBarrier Разрешает цель рендеринга для последующих операций выборки из нее.
TexCoord Устанавливает текущую координату текстуры (v.x,v.y,v.z) для всех текстурных блоков.
TexCoord2 Устанавливает текущую координату текстуры (x,y) для всех текстурных блоков.
TexCoord3 Устанавливает текущие координаты текстуры (x,y,z) для всех текстурных блоков.
Vertex Отправляет вершину.
Vertex3 Отправляет вершину.
Viewport Устанавливает область просмотра рендеринга.
Вы можете отблагодарить автора, за перевод документации на русский язык. Донат
API скрипты 2021.3