图形API简介
OpenGL
(Open Graphics Library)是一个跨平台编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象称为⼀个OpenGL
的对象,对这些资源的操作抽象为⼀个的OpenGL
指令。
OpenGL ES
(OpenGL for Embedded Systems)是 OpenGL
三维图形 API 的子集,针对手机、 PDA和游戏主机等嵌入式设备而设计,去除了许多不不必要和性能较低的API接⼝。
DirectX
是由很多API组成的,DirectX
并不不是⼀个单纯的图形API. 最重要的是DirectX
是属于 Windows上⼀个多媒体处理API。并不支持Windows以外的平台,所以不是跨平台框架, 按照性质分类,可以分为四大部分,显示部分、声音部分、输⼊部分和网络部分。
Metal
: Apple为游戏开发者推出了新的平台技术Metal
,该技术能够为 3D 图像提高 10 倍的渲染性能。Metal
是Apple为了解决3D渲染而推出的框架。
OpenGL
/OpenGL ES
/ Metal
在任何项目中解决问题的本质就是利用GPU芯片来高效渲染图形图像.
图形API 是iOS开发者唯⼀接近GPU的⽅方式.
1 、OpenGL 上下文 ( context )
在应⽤用程序调⽤用任何OpenGL
的指令之前,需要安排首先创建⼀个OpenGL
的 上下文。这个上下文是一个非常庞大的状态机,保存了OpenGL
中的各种状态,这也是OpenGL
指令执行的基础.
2、OpenGL 状态机
状态机是理论上的一种机器.这个非常难以理解.所以我们把状态机这么理解.状态机描述了一个对象在其生命周期内所经历的各种状态,状态间的转变,发生转变的动因,条件及转变中所执行的活动。或者说,状态机是一种行为,说明对象在其生命周期中响应事件所经历的状态序列以及对那些状态事件的响应。因此具有以下特点:
- 有记忆功能,能记住其当前的状态
- 可以接收输入,根据输入的内容和⾃己的原先状态,修改⾃己当前状态,并且可以有对应输出
- 当进入特殊状态(停机状态)的时候,便不再接收输入,停止工作;
类推到OpenGL
中来,可以这么理理解:
OpenGL
可以记录⾃己的状态(如当前所使用的颜色、是否开启了了混合功能等)
OpenGL
可以接收输入(当调用OpenGL
函数的时候,实际上可以看成 OpenGL
在接收我们的输入),如我们调用glColor3f
,则OpenGL
接收到这个输入后会修改⾃己的“当前颜色”这个状态;
OpenGL
可以进入停⽌状态,不再接收输入。在程序退出前,OpenGL
总会先停⽌工作的;
网友评论