OpenGL中的坐标系与矩阵

1.OpenGL图形管线(显示流程)
   
 
 
2.模型变换(Modeling Transformation)
        MC( 模型坐标 , Child -> Parent ) -> WC( 世界坐标 )
          
       标准C语言的矩阵为行主序,即M[i][j]表示第i行、第j列。 OpenGL中的矩阵为 列主序,即M[i][j]表示第i列、第j行。 以下所有矩阵都为列主序矩阵!
 
       MC( 模型坐标) -> WC(世界坐标)
 
 
  3.视点变换(Viewing Transformation)
       WC(世界坐标) -> VC(观察坐标,即观察坐标系下的局部坐标)
 
        设置视点
       gluLookAt(eyex, eyey, eyez,                      //视点(相机)坐标
                        centerx, centery, centerz,       //参考点(场景中心点)坐标
                        upx, upy, upz);                          //向上向量
 
       OpenGL根据gluLookAt()的参数计算 视景矩阵。观察坐标系以视点为原点,以视线方向(参考点至视点方向)为+Z轴。下图中MgluLookAt为观察坐标转换为世界坐标的转换矩阵, OpenGL中的视景矩阵ModelViewMatrix为该矩阵的逆矩阵,世界坐标经逆矩阵变换后变为观察坐标。
    
 
 
  4.投影变换(Projection Transformation)
       VC( 观察坐标 )-> PC ( 投影坐标 )-> NC( 归一化坐标 )
 
        设置正交投影的投影范围
       glOrtho(xmin, xmax,     //观察坐标系中的X范围
                    ymin, ymax,     //观察坐标系中的Y范围
                    znear, zfar);     //观察坐标系中的Z范围
 
       OpenGL根据glOrtho()的参数计算 投影矩阵。这个矩阵的作用就是将坐标进行正交投影并且将投影后的坐标归一化 (转换到-1到1之间),且六面体的中心在观察坐标系的原点。同时右手坐标系转换为左手坐标系!
    
 
       投影示意图:
   
 
 
5.视口变化(Viewport Transformation)
       NC( 归一化坐标 ) -> DC ( 设备坐标 )
 
        设置视口
       glViewport(x, y,           //视口的左下角坐标(像素单位)
                        width,        //视口的宽度
                        height);     //视口的高度
 
       OpenGL根据glViewport()的参数计算 视口矩阵。将归一化的x,y坐标值转换为像素坐标,但z坐标值(深度值)转换为0到1之间!
 
  
 
 
 
6.OpenGL的像素坐标系
       OpenGL中的像素坐标系,原点位于左下角,x轴向右,y轴向上。
    
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值