OpenGL函数思考-glOrtho ide
函数原型: 函数
void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far) spa
参数说明: 设计
函数说明: 对象
glOrtho()这个函数设置正摄投影矩阵,通常在执行命令glMatrixMode(GL_PROJECTION)和glLoadidentity()以后使用;使用glOrtho函数能够将当前的可视空间设置为正投影空间。基参数的意义如图,若是绘制的图空间自己就是二维的,可使gluOrtho2D.他的使用相似于glOrtho.这个函数描述了一个平行修剪空间。这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反)。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,上边和下边是最小和最大的Y值,近处和远处是最小和最大的Z值。 原型
正射投影: it
正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体。正射投影的最大一个特色是不管物体距离相机多远,投影后的物体大小尺寸不变。这种投影一般用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。 rust
glOrtho就是一个正射投影函数。它建立一个平行视景体。实际上这个函数的操做是建立一个正射投影矩阵,而且用这个矩阵乘以当前矩阵。其中近裁剪平面是一个矩形,矩形左下角点三维空间坐标是(left,bottom,-near),右上角点是(right,top,-near);远裁剪平面也是一个矩形,左下角点空间坐标是(left,bottom,-far),右上角点是(right,top,-far)。全部的near和far值同时为正或同时为负。若是没有其余变换,正射投影的方向平行于Z轴,且视点朝向Z负轴。这意味着物体在视点前面时far和near都为负值,物体在视点后面时far和near都为正值。 im
glOrtho是创建一个正交平行的视景体。 通常用于物体不会由于离屏幕的远近而产生大小的变换的状况。好比,经常使用的工程中的制图等。须要比较精确的显示。 而做为它的对立状况, glFrustum则产生一个透视投影。这是一种模拟真是生活中,人们视野观测物体的真实状况。例如:观察两条平行的火车到,在过了很远以后,这两条铁轨是会相交于一处的。还有,离眼睛近的物体看起来大一些,远的物体看起来小一些。 top
glOrtho(left, right, bottom, top, near, far), left表示视景体左面的坐标,right表示右面的坐标,bottom表示下面的,top表示上面的。这个函数简单理解起来,就是一个物体摆在那里,你怎么去截取他。这里,咱们先抛开glViewport函数不看。先单独理解glOrtho的功能。 假设有一个球体,半径为1,圆心在(0, 0, 0),那么,咱们设定glOrtho(-1.5, 1.5, -1.5, 1.5, -10, 10);就表示用一个宽高都是3的框框把这个球体整个都装了进来。 若是设定glOrtho(0.0, 1.5, -1.5, 1.5, -10, 10);就表示用一个宽是1.5, 高是3的框框把整个球体的右面装进来;若是设定glOrtho(0.0, 1.5, 0.0, 1.5, -10, 10);就表示用一个宽和高都是1.5的框框把球体的右上角装了进来。上述三种状况能够见图:
从上述三种状况,咱们能够大体了解glOrtho函数的用法。glOrtho函数只是负责使用什么样的视景体来截取图像,并不负责使用某种规则把图像呈如今屏幕上