图形API简介
OpenGL /OpenGL ES/ Metal 在任何项⽬中解决问题的本质就是利⽤GPU芯⽚来⾼效渲染图形图像。图形API 是iOS开发者唯⼀接近GPU的⽅式。
OpenGL(Open Graphics Library)
是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。它将计算机的资源抽象称为⼀个个OpenGL的对象,对这些资源的操作抽象为⼀个个的OpenGL指令。
OpenGL ES(OpenGL for Embedded Systems)
是 OpenGL 三维图形 API 的⼦集,针对⼿机、PDA和游戏主机等嵌⼊式设备⽽设计,去除了许多不必要和性能较低的API接⼝。
DirectX
是由微软公司创建的多媒体编程接口,由很多API组成,DirectX并不是⼀个单纯的图形API。最重要的是DirectX是属于Windows上⼀个多媒体处理框架。并不⽀持Windows以外的平台,所以不是跨平台框架。按照性质分类,可以分为四⼤部分:显示部分、声⾳部分、输⼊部分和⽹络部分。
Metal
Apple为游戏开发者推出了新的平台技术 Metal,该技术能够为 3D 图像提⾼ 10 倍的渲染性能。Metal 是Apple为了解决3D渲染⽽推出的框架。
OpenGL 专业名词解析
OpenGL 上下⽂(context)
-
在应⽤程序调⽤任何OpenGL的指令之前,需要⾸先创建⼀个OpenGL的上下⽂。这个上下⽂是⼀个⾮常庞⼤的状态机,保存了OpenGL中的各种状态,这也是OpenGL指令执⾏的基础。
-
OpenGL的函数不管在哪个语⾔中,都是类似C语⾔⼀样的⾯向过程的函数,本质上都是对OpenGL上下⽂这个庞⼤的状态机中的某个状态或者对象进⾏操作,当然你得⾸先把这个对象设置为当前对象。因此,通过对OpenGL指令的封装,是可以将OpenGL的相关调⽤封装成为⼀个⾯向对象的图形API的 。
-
由于OpenGL上下⽂是⼀个巨⼤的状态机,切换上下⽂往往会产⽣较⼤的开销,但是不同的绘制模块,可能需要使⽤完全独⽴的状态管理。因此,可以在应⽤程序中分别创建多个不同的上下⽂,在不同线程中使⽤不同的上下⽂,上下⽂之间共享纹理、缓冲区等资源。这样的⽅案,会⽐反复切换上下⽂,或者⼤量修改渲染状态,更加合理⾼效的。
OpenGL 状态机
- 状态机是理论上的⼀种机器.这个⾮常难以理解。所以我们把这个状态机这么理解。状态机描述了⼀个对象在其⽣命周期内所经历的各种状态,状态间的转变,发⽣转变的动因,条件及转变中所执⾏的活动。或者说,状态机是⼀种⾏为,说明对象在其⽣命周期中响应事件所经历的状态序列以及对那些状态事件的响应。因此具有以下特点:
- 有记忆功能,能记住其当前的状态。
- 可以接收输⼊,根据输⼊的内容和⾃⼰的原先状态,修改⾃⼰当前状态,并且可以有对应输出。
- 当进⼊特殊状态(停机状态)的时候,就不再接收输⼊,停⽌⼯作。
- 类推到OpenGL 中来,可以这么理解:
- OpenGL可