Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

GL

class in UnityEngine

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство

Описание

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

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

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

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

Обычным способом GL визуализации чаще всего является вызов OnPostRender() из скрипта прикрепленного к камере camera, or inside an image effect function (OnRenderImage).


        
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 (); } }

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


        
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, тогда вы фактически получите случайный материал (который был использован до этого), что нежелательно. Не забывайте об этом.

Статические переменные

invertCullingИнвертировать отсечение обратных сторон (true) или нет (false).
LINESРежим для Begin: визуализация линий.
modelviewТекущая modelview матрица.
QUADSРежим для Begin: визуализация четырехугольников.
sRGBWriteControls whether Linear-to-sRGB color conversion is performed while rendering.
TRIANGLE_STRIPРежим для Begin: визуализация полосы треугольников.
TRIANGLESРежим для Begin: визуализация треугольников.
wireframeСледует ли производить визуализацию в режиме отображения сетки?

Статические функции

BeginНачать визуализацию 3D примитивов.
ClearОчистить текущий буфер визуализации.
ClearWithSkyboxОчистить текущий буфер визуализации цветом skybox камеры.
ColorУстановить текущий цвет вершин.
EndЗакончить визуализацию 3D примитивов.
GetGPUProjectionMatrixВычислить проекционную матрицу GPU на основе проекционной матрицы камеры.
InvalidateStateАннулировать закэшированные внутренние renderstate.
LoadIdentityЗагрузить единичную матрицу в текущую modelview матрицу.
LoadOrthoВспомогательная функция для установки ортографической перспективной трансформации.
LoadPixelMatrixУстановить матрицу для попиксельной визуализации.
LoadProjectionMatrixЗагрузить произвольную матрицу в текущую матрицу проекции.
MultiTexCoordУстанавливает текстурные координаты (v.x,v.y,v.z) текстурному блоку unit.
MultiTexCoord2Устанавливает текстурные координаты (x,y) текстурному блоку unit.
MultiTexCoord3Устанавливает текстурные координаты (x,y,z) текстурному блоку unit.
MultMatrixУмножает текущую modelview матрицу на указанную.
PopMatrixВосстанавливает projection и modelview матрицы с вершины стека матриц.
PushMatrixСохраняет projection и modelview матрицы в стек матриц.
RenderTargetBarrierResolves the render target for subsequent operations sampling from it.
TexCoordУстанавливает текстурные координаты (v.x,v.y,v.z) всем текстурным блокам.
TexCoord2Устанавливает текстурные координаты (x,y) для всех текстурных блоков.
TexCoord3Устанавливает текстурные координаты (x,y,z) для всех текстурных блоков.
VertexОтправить вершину.
Vertex3Отправить вершину.
ViewportЗадать окно визуализации.