gluOrtho2D https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluOrtho2D.xml设置一个正投影 https://en.wikipedia.org/wiki/Orthographic_projection矩阵,具有给定的左、右、上、下,但固定的近平面和远平面分别为 -1 1。
gluOrtho2D( left, right, bottom, top );
这意味着
gluOrtho2D(0,640,480,0)
创建一个投影矩阵,将 0 映射到视口的左边界,将 640 映射到右边界,将 480 映射到底部,将 0 映射到顶部。
左、右、下、上、近和远的值定义了一个框。盒子体积内的所有几何图形在视口上都是“可见”的。
投影矩阵描述了从场景的 3D 点到视口的 2D 点的映射。它从眼睛空间变换到剪辑空间,并且剪辑空间中的坐标除以w
剪辑坐标的组成部分。 NDC 的范围为 (-1,-1,-1) 到 (1,1,1)。
超出裁剪空间的每个几何体都会被裁剪。
在正交投影中,眼睛空间中的坐标线性映射到标准化设备坐标,并且剪辑空间坐标等于标准化设备坐标,因为w
分量为 1(对于笛卡尔坐标 https://en.wikipedia.org/wiki/Cartesian_coordinate_system).
正交投影矩阵:
r = right, l = left, b = bottom, t = top, n = near, f = far
2/(r-l) 0 0 0
0 2/(t-b) 0 0
0 0 -2/(f-n) 0
-(r+l)/(r-l) -(t+b)/(t-b) -(f+n)/(f-n) 1