Version: 5.4 (switch to 5.5b)
言語English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

GL

class in UnityEngine

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

マニュアルに切り替える

Description

低レベルのグラフィックスライブラリです。

OpenGL の即時モードと同様のアクティブな変換行列、 レンダリングコマンドでの出力などの低レベルグラフィックスのタスクを実行します。 ほとんどの場合で GL 関数の即時描画モードを使用するよりも Graphics.DrawMeshCommandBuffer 関数を使用する方が 効率的であることに注意してください。

GL 即時描画関数は設定した"現在のマテリアル"を使用します(Material.SetPassを参照してください。)。 どのようにレンダリングを行うかマテリアルを制御 (ブレンディングやテクスチャなど)します。 GL 描画関数を使用する前に明示的に設定しなければマテリアルは何もできません。 また、 GL 描画コード内から他の描画コマンドを呼び出す場合、 それらは同様に制御の下にあることを確認してマテリアルを別のものに設定できます。

GL 描画コマンドは直ちに実行されます。つまり、Update() でそれらを呼び出すと、 カメラが表示される前にそれらが実行されます ( GL 描画は非表示にし、カメラは画面をほとんどクリア したようになります)。

GL drawing を呼ぶための場所は、ほとんどの場合、カメラにアタッチされているスクリプトから OnPostRender() の中か、 イメージエフェクト関数 ( OnRenderImage ) の内部です。

no example available in JavaScript
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 (); } }

注: このクラスはラインやトライアングルの組を描画する必要があるときにはほぼ常に使用し、メッシュには使わないでください。 予想外の動作をさけるため、基本的な使用方法は:

no example available in JavaScript
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { void OnPostRender() { // Set your materials GL.PushMatrix(); // yourMaterial.SetPass( ); // Draw your stuff GL.PopMatrix(); } }

"// 何かを描画" において SetPass() を事前に宣言したマテリアルで使用し、描画のために使用すべきです。 SetPass を呼び出ししない場合、マテリアルはランダムに選ばれる(過去に使用されたたものの中から)ため必ず呼び出すべきです。

Static Variables

invertCullingバックフェースかリングを反転させるかどうかを選択する
LINES線(Line)描画の Begin モード
modelview現在の ModelView 行列
QUADS四角形(Quad)描画の Begin モード
sRGBWriteレンダリング中に Linear から sRGB に色変換を実行するかどうか制御します。
TRIANGLE_STRIPトライアングルストリップ描画の Begin モード
TRIANGLESトライアングル描画の Begin モード
wireframeワイヤフレームでレンダリングすべきか。

Static Functions

Begin3D プリミティブの描画を開始します
Clear現在のレンダリングバッファをクリアします
ClearWithSkyboxカメラのスカイボックスで現在のレンダーバッファをクリアします
Color現在の頂点カラーを設定します
End3D プリミティブの描画を終了します
Flushドライバのコマンドバッファのキューにたまったコマンドを GPU に送ります。
GetGPUProjectionMatrixカメラの射影行列から、GPU の射影行列を計算します
InvalidateState内部的にキャッシュされたレンダーステートを無効にします。
LoadIdentity現在の ModelView 行列に単位行列を読み込みます。
LoadOrthoオルソパースペクティブ変換を設定するヘルパー関数
LoadPixelMatrixピクセル修正レンダリングのための行列を設定します。
LoadProjectionMatrix任意の行列を現在の射影行列を読み込みます。
MultiTexCoord実際のテクスチャ unit に現在のテクスチャ座標 (v.x,v.y,v.z) を設定します。
MultiTexCoord2実際のテクスチャ unit に現在のテクスチャ座標 (x, y) を設定します。
MultiTexCoord3実際のテクスチャ unit に現在のテクスチャ座標 (x, y, z) を設定します。
MultMatrix指定されたひとつの現在の ModelView 行列を乗算します。
PopMatrix行列をスタックして上から ModelView 行列と射影行列の両方を復元します。
PushMatrixModelView 行列と射影行列を行列スタックに保存します。
RenderTargetBarrierサンプリングから後に続く操作のために Render Target を解決します。
TexCoordすべてのテクスチャユニットの現在のテクスチャ座標 (v.x,v.y,v.z) を設定します。
TexCoord2すべてのテクスチャユニットの現在のテクスチャ座標 (x, y) を設定します。
TexCoord3すべてのテクスチャユニットの現在のテクスチャ座標 (x, y, z) を設定します。
Vertex頂点を送信します。
Vertex3頂点を送信します。
Viewportレンダリングビューポートを設定します。