OpenGL的坐标系

坐标系

  • 2D笛卡尔坐标系(由x、y决定)
    2D笛卡尔坐标系
  • 3D笛卡尔坐标系(由x、y、z决定)

3D笛卡尔坐标系

视口

  • glViewport(GLint x,GLint y,GLsizei width,GLsizei height),对应屏幕区域的范围;
  • 对应全屏幕

对应整个屏幕

  • 对应屏幕一部分

对应屏幕一部分

投影

  • 透视投影(左)和正投影(右)
    左为透视投影,右为正投影

OpenGL的摄像机坐标系(观察者)

在这里插入图片描述

视觉坐标系

  • 视觉坐标系是观察者的眼睛出发,朝手机设备看过去所能看到的,会有一个z轴的最近距离和最远距离,也就是zNear和zFar,只有在这两者之间并且也满足x轴和Y轴坐标在屏幕当中的坐标才会显示出来,越远的东西会显示得越小,产生透视的效果;

在这里插入图片描述

世界坐标系, 惯性坐标系,物体坐标系

  • 世界坐标系:就是由用户构造的固定坐标系,方便描述这个坐标系下各种物体相对于原点的位置;
  • 惯性坐标系:是指世界坐标系和物体坐标系转换的中间产物。惯性坐标系的原点和物体坐标系的原点重合,但惯性坐标系的轴和世界坐标系的轴平行;
  • 物体坐标系:物体自己独有的坐标系;
  • 由物体坐标系转换到惯性坐标系只需要旋转,从惯性坐标系转换到世界坐标系只需要平移。

在这里插入图片描述
在这里插入图片描述

坐标变换

  • OpenGL最终渲染到屏幕上是2D的,所以只需要将3D坐标进行一系列的变换为2D坐标,整个过程如下图所示:
    在这里插入图片描述
  • OpenGL中只定义了裁剪坐标系、规范化设备坐标系和屏幕坐标系。而局部坐标系(模型坐标系)、世界坐标系和摄像机坐标系都是为了方便用户设计而自定义的坐标系,他们的关系如下图所示: 在这里插入图片描述
  • 模型变换、视变换、投影变换由用户在顶点着色器中完成。
  • 透视除法、视口变换由OpenGL在顶点着色器处理之后完成。

猜你喜欢

转载自blog.csdn.net/Forever_wj/article/details/107103061