图形编程接口OpenGL/OpenGL ES/Meta有什么用?

2020-10-21  本文已影响0人  JimmyCJJ

图形API可以解决什么问题?

简单来说就是实现图形的底层渲染

在iOS开发中,可以使用哪些技术来进行图形编程?

如何学习?

我们首先需要理解图形编程中的各种专业名词的定义才能更好地学习图形编程,这一部分比较枯燥,但是啃下来之后必定有所收获

推荐几本书籍:


简介

OpenGL (跨平台)

OpenGL ES (跨平台,针对移动端)

Direct (仅Window)

Metal (仅Apple)


iOS中的图层框架结构

从绘制到展示的流程图
如上图所示,我们平时使用的CoreGraphicsCoreAnimationCoreImage框架其底层本质还是调用OpenGL ES/Metal去驱动GPU作渲染操作,然后显示在屏幕上。

总结


OpenGL专业名词解析

OpenGL上下文context

OpenGL状态机
状态机是理论上的一种机器,我们可以这么理解它:
状态机描述了一个对象在其生命周期内所经历的各种状态,状态间的转变,发生转变的动因,条件及转变中所执行的活动。
或者说,状态机是一种行为,说明对象在其生命周期中响应事件所经历的状态序列以及对那些状态事件的响应。
它具有以下特点

类推到OpenGL中来,可以这么理解

3D渲染

为图形处理器提供数据

上图的箭头代表了与3D渲染相关的硬件组件之间的数据交换。每个箭头也代表着一个渲染性能的瓶颈。

顶点数组(VertexArray
和顶点缓冲区(VertexBuffer

着⾊器程序Shader

管线

固定管线/存储着⾊器

顶点着⾊器 VertexShader

⽚元着⾊器程序 FragmentShader

GLSL (OpenGL Shading Language)

光栅化Rasterization

纹理

混合(Blending)

渲染上屏/交换缓冲区(SwapBuffer)

苹果的Core Animation合成器使用OpenGL ES来尽可能高效地控制CPU、混合层和切换帧缓存。一般使用混合来描述混合图像以形成一个合成结果的过程。所有显示的图画都是通过Core Animation合成器来完成的,因此最终都涉及OpenGL ES。


帧缓存可以与层分享像素存储器

变换矩阵(Transformation)

投影矩阵Projection


着色器的渲染流程

着色器的渲染流程

本章小结


下一篇将会讲解
OpenGL在MAC上的配置流程

上一篇 下一篇

猜你喜欢

热点阅读