OpenGL的坐标系

坐标系

  • 2D笛卡尔坐标系(由x、y决定)
    OpenGL的坐标系_第1张图片
  • 3D笛卡尔坐标系(由x、y、z决定)

OpenGL的坐标系_第2张图片

视口

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

OpenGL的坐标系_第3张图片

  • 对应屏幕一部分

OpenGL的坐标系_第4张图片

投影

  • 透视投影(左)和正投影(右)
    OpenGL的坐标系_第5张图片

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

OpenGL的坐标系_第6张图片

视觉坐标系

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

OpenGL的坐标系_第7张图片

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

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

OpenGL的坐标系_第8张图片
OpenGL的坐标系_第9张图片

坐标变换

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

你可能感兴趣的:(OpenGL,ES,iOS开发高级进阶)