OpenGL
是一个跨编程语言、跨平台的编程图形程序接口
OpenGL ES
是
OpenGL
三维图形API的本身,针对
手机、PDA和游戏主机
等嵌入式设备而设计的,去除了不少没必要要觉和性能较低的API接口
DirectX
是由不少API组成的,
DirectX
并非一个单纯的图形API。最重要的是
DirectX
是属于Windows上一个多媒体处理框架,并不支持Windows之外的平台
Metal
是Apple为游戏开发者退出的新的平台技术,该技术能为3D图像提升10倍的渲染性能
简单来讲就是 实现图形的底层渲染
web
OpenGL/OpenGL ES/Metal 在任何项目中解决问题的本质——利用 GPU芯片
来高效渲染图形图像编程
图形API是iOS开发者惟一接近GPU的方式数组
Context
OpenGL状态机
描述了一个对象的生命周期经历各类状态发生转变时的动因、条件及转变中所执行的活动
渲染
:将图形/图像数据转换成3D空间图像的操做叫作渲染(Rendering)即
数据->可视化界面
的过程,也就是咱们口中所说的
绘制
顶点数组
(VertexArray)和
顶点缓冲区
(VertexBuffer):
管线
:能够理解为流水线。在OpenGL下渲染图形,就会经历一个一个节点,这样的操做能够理解为管线。之因此称为管线是由于显卡在处理数据的时候是按照一个固定的顺序来的
固定管线/存储着色器
:在早期OpenGL版本中,开发者只须要传入相应的参数,就能快速完成图形的渲染。开发者只须要调用API使用封装好的固定shader程序段,并不须要关注底层实现原理
着色器程序Shader
是一段程序代码,是用来操做GPU进行计算的,主要的着色器有:
顶点着色器
对传入的顶点数据进行运算,将顶点转换为图元;而后进行
光栅化
转化为栅格化数据;最后传入
片元着色器
进行运算
顶点着色器
(VertexShader)
片元着色器
(FragmentShader)
GLSL
(OpenGL Shading Language)
顶点着色器
和
片元着色器
光栅化
(Rasterization)
几何图元变为二维图像
的过程。该过程包含了两部分工做:决定窗口坐标中的那些整形栅格区域被基本图元占用;分配一个颜色值和一个深度值到各个区域
纹理
:即图片(位图)
混合
:两种颜色的视图叠在一块儿后的颜色就叫混合
变换矩阵
(Transformation):图形发平生移、缩放、旋转变换
投影矩阵
(Projection):将3D坐标转换为二维屏幕坐标
渲染上屏/交换缓冲区
(SwapBuffer)
垂直同步信号
,这个技术成为
垂直同步
MVP矩阵:Model、View、Projection框架
经常使用坐标系的比较编程语言
物体坐标系
和
世界坐标系
转换过程当中的一个中转站,为了方便物体坐标系转换到世界坐标系
坐标系对应的空间系编辑器
物体坐标/对象坐标->(模型变换)->世界坐标->(视觉变换)->观察者坐标/摄像机坐标->(投影变换)->裁剪坐标->(透视除法)->规范化设备坐标->(视口变化)->屏幕坐标
这个过程当中如下过程是能够开发者定义的:函数
顶点着色器
处理顶点数据
细分着色器
描述物体的形状(OpenGL3.0已经不开放细分着色器的API)
几何着色器
决定输出的图元类型和个数(不须要关心细节)
图元设置
明确图元的类型,是三条线仍是三角形(三个顶点并必定是三角形)
光栅化
几何图元转为二维图像(像素点)
片元着色器
填充像素点的颜色、深度值等
具体请见iOS中图片的解压缩到渲染过程oop
+imageWithContentOfFile:
从磁盘中加载一张图片并不会解压缩图片
CATransaction
捕获到了
UIImageView
图层数的变化
Runloop
到来时,
Core Animation
提交了这个隐式的
transaction
CGBitmapContextCreate
对图片进行从新绘制,获得一张新的解压缩后的位图