版本: Unity 6 (6000.0)
语言English
  • C#

Matrix4x4.Ortho

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Matrix4x4 Ortho(float left, float right, float bottom, float top, float zNear, float zFar);

参数

left 左侧 x 坐标。
right 右侧 x 坐标。
bottom 底部 y 坐标。
top 顶部 y 坐标。
zNear 近裁剪平面值。
zFar 远裁剪平面值。

返回值

Matrix4x4 投影矩阵。

描述

创建正交投影矩阵。

当返回的矩阵用作摄像机的投影矩阵时,它会创建 leftrighttopbottom 之间区域的投影,zNearzFar 作为近和远深度裁剪平面,投影到一个从 (left, bottom, near) = (-1, -1, -1) 到 (right, top, far) = (1, 1, 1) 的立方体中。

返回的矩阵嵌入了一个 z 翻转操作,其目的是取消摄像机视图矩阵执行的 z 翻转。如果视图矩阵是单位矩阵或某些不执行 z 翻转的自定义矩阵,请考虑将投影矩阵的第三列(即 m02、m12、m22 和 m32)乘以 -1。

Unity 中的投影矩阵遵循 OpenGL 约定,即裁剪空间近平面位于 z=-1,远平面位于 z=1

请注意,根据使用的图形 API,着色器中的投影矩阵可能遵循不同的约定,例如 D3D 样式裁剪空间的近平面为零,远平面为一;“反向 Z”投影的近平面为一,远平面为零。要计算适合传递给着色器变量的投影矩阵值,请使用 GL.GetGPUProjectionMatrix

using UnityEngine;

public class ExampleScript : MonoBehaviour { void Start() { // create orthographic matrix var matrix = Matrix4x4.Ortho(-4, 4, -2, 2, 1, 100); // will print: // 0.25000 0.00000 0.00000 0.00000 // 0.00000 0.50000 0.00000 0.00000 // 0.00000 0.00000 -0.02020 -1.02020 // 0.00000 0.00000 0.00000 1.00000 Debug.Log("projection matrix\n" + matrix);

// get shader-compatible projection matrix value var shaderMatrix = GL.GetGPUProjectionMatrix(matrix, false); // on a Direct3D-like graphics API, will print: // 0.25000 0.00000 0.00000 0.00000 // 0.00000 0.50000 0.00000 0.00000 // 0.00000 0.00000 0.01010 1.01010 // 0.00000 0.00000 0.00000 1.00000 Debug.Log("shader projection matrix\n" + shaderMatrix); } }