OpenGL 投影矩阵的推导

计算机显示器是一个2D平面。OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上。GL_PROJECTION矩阵用于该投影变换。首先,它将所有定点数据从观察坐标转换到裁减坐标。接着,这些裁减坐标通过除以w分量的方式转换到归一化设备坐标(NDC)。本文主要推导正交投影矩阵和透视投影矩阵。

注意NDC和相机坐标系的不同,NDC是左手坐标系,方向和相机坐标系是相反的。下图是正交投影视景体和NDC坐标系的比较

OpenGL <wbr>投影矩阵的推导

透视投影

函数1:void glFrustum(GLdouble  left,GLdouble  right,GLdouble bottom,GLdouble  top, GLdouble  nearVal,GLdouble  farVal);

left,right指明相对于垂直平面的左右坐标位置

bottom,top指明相对于水平剪切面的下上位置

nearVal,farVal指明相对于深度剪切面的远近的距离,两个必须为正数

矩阵推导:

OpenGL <wbr>投影矩阵的推导

函数2:gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

这几个参数分别用于创建透视投影的视景体:

fovy:指定视景体的视野的角度,以度数为单位,y轴的上下方向

aspect,这个好理解,就是实际窗口的宽高比,即x/y

zNear,这个呢,表示你近处,的裁面,

zFar表示远处的裁面,

矩阵推导:(对应于下图第二列的情况)

OpenGL <wbr>投影矩阵的推导
   OpenGL <wbr>投影矩阵的推导

正交投影 

函数: glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdoublenear,GLdouble far);

这几个参数分别用于创建平行视景体的左右上下边界以及远近裁剪面的为位置。

矩阵推导:

OpenGL <wbr>投影矩阵的推导

关于投影变换的经典例程:

     http://www.songho.ca/opengl/files/matrixProjection.zip

     http://www.songho.ca/opengl/files/matrixModelView.zip

文章参考:http://www.songho.ca/opengl/gl_projectionmatrix.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值