Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

GL

класс в UnityEngine

Выполнено в:UnityEngine.CoreModule

Описание

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

С помощью этого класса работают с активными матрицами преобразования, отдают команды рендеринга в духе непосредственного режима OpenGL и решают другие низкоуровневые графические задачи. Учтите, что почти во всех случаях использование Graphics.RenderMesh или CommandBuffer является более эффективным, чем использование чертежа в режиме немедленного.

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

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

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

Примечание: High Definition Render Pipeline (HDRP) и Universal Render Pipeline (URP) не поддерживают Camera.OnPostRender. Вместо этого использовать RenderPipelineManager.endCameraRendering или RenderPipelineManager.endFrameRendering.

using UnityEngine;

public class ExampleClass : MonoBehaviour { // When added to an object, draws colored rays from the // transform position. public int lineCount = 100; public float radius = 3.0f;

static Material lineMaterial; static void CreateLineMaterial() { if (!lineMaterial) { // Unity has a built-in shader that is useful for drawing // simple colored things. Shader shader = Shader.Find("Hidden/Internal-Colored"); lineMaterial = new Material(shader); lineMaterial.hideFlags = HideFlags.HideAndDontSave; // Turn on alpha blending lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); // Turn backface culling off lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off); // Turn off depth writes lineMaterial.SetInt("_ZWrite", 0); } }

// Will be called after all regular rendering is done public void OnRenderObject() { CreateLineMaterial(); // Apply the line material lineMaterial.SetPass(0);

GL.PushMatrix(); // Set transformation matrix for drawing to // match our transform 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)); // One vertex at transform position GL.Vertex3(0, 0, 0); // Another vertex at edge of circle 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() { // Set your materials GL.PushMatrix(); // yourMaterial.SetPass( ); // Draw your stuff GL.PopMatrix(); } }

В месте, отмеченном комментарием "// Draw your stuff", следует вызвать SetPass() для одного из ранее объявленных материалов, который будет использован для отрисовки. Если не вызвать SetPass, фактически будет выбран случайный материал (тот, который использовался до этого), что нежелательно. Поэтому обязательно вызовите SetPass.

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

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

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

Метод Описание
BeginНачните рисовать примитивы 3D.
ClearОчистить текущий буфер отображения.
ClearWithSkyboxОчистить текущий буфер рендеринга с помощью skybox камеры.
ColorЗадает цвет текущей вершины.
EndКонец рисования 3D примитивов.
FlushОтправляет команды из буфера команд драйвера в GPU.
GetGPUProjectionMatrixРассчитать матрицу проекции GPU из матрицы проекции камеры.
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Устанавливает окно отображения.