OpenGL学习记录(二)
一、OpenGL中的坐标系
1. 2D笛卡尔坐标系(X轴,Y轴),平面图形,视口(显示窗口区域系数)
2. 3D笛卡尔坐标系(X轴,Y轴,Z轴),立体图形
3. OpenGL的投影方式有:
透视投影:用来渲染立体图形,有远小近大的效果。具有更加逼真的效果
正投影:只能用来设置平面图形
4.坐标系的分类:
① 惯性坐标系:没有什么参考价值,只要用来平移到世界坐标系
② 世界坐标系:大环境中的位置,系统的绝对坐标
③ 物体空间坐标系(局部空间):局部空间中的位置
④ 摄像机坐标系:观察空间(观察者)
5.坐标系之间的变换
① 物体坐标系,模型变换
② 转换到世界坐标系,视变换
③ 转换到观察者坐标系/摄像机坐标系,投影变换
④ 转换到裁剪坐标系,透视除法
⑤ 转换到规范化设备坐标,视口变换
⑥ 转换到屏幕坐标
注:① - ④ 是可以由开发者自定义完成的,⑤ - ⑥是有系统OpenGL来完成的
二、着色器的渲染流程
1.顶点数据
2.顶点着色器:接收顶点数据,单独处理每个顶点
3.细分着色器:
① 可选:描述物体形状,在管线中生成新的饿几何平面模型,生成最终形态
② 组分控制着色器/细分计算着色器:对所有的图形进行修改几何图元类型或者放弃所有图像
4.几何着色器
5.图元设置
6.剪切:剪切窗口之外的绘制
7.光栅化:输入图元的数学描述,转化为与屏幕对应位置像素片元,简称光栅化
8.片元着色器:片元着色器以及深度值,然后传递到片元测试和混合模块
9.效果
三、补充几个知识点
1.图片的渲染流程:
① GPU解码图片
② GPU纹理混合、顶点计算、像素点填充计算、渲染到帧缓冲区
③ 时钟信号:垂直同步、水平同步
④ iOS设备双缓冲机制:显示系统通常会引入两个帧缓冲区,双缓冲机制
2.MVP矩阵:
① model:物体的一些变化
② view:观察
③ projection:3D矩阵
3.强制解压缩:对图片进行重新绘制,得到一张新的压缩后的位图,其中用到的最核心的函数是:GCBitmapContextCreate