图形Api的简单介绍及对比
图形Api主要解决的是渲染问题。下面介绍几种并简单说明一下。
- OpenGL:适用于渲染PC端(Windows或Mac)
- OpenGL ES:适用于渲染移动端(iOS或者Android)
- Metal:是Apple2014年推出,2018年崛起的语言。把渲染推到极致,用于3D渲染推出的框架(正在慢慢走向跨平台)
- OpenCV:用于识别,大型项目有些用face++。
注:OpenGL ES只是比OpenGL减少一部分子集,ES(嵌入式)应用于移动端。苹果底层渲染目前是由metal实现的
OpenGL的专业名词解释
OpenGL 上下⽂ (context)
- context上下文相当于一个庞大的状态机,主要用于记录openGL中的各种状态。也是openGL执行命令的基础
- 上下文是一个庞大的状态机。切换上下文会产生庞大的开销。但是不同的模块可能需要使用独立的状态管理。所以可以分别创建多个上下文。在不同的线程中使用不同的上下文。上下文中共享纹理缓冲区等资源,这样会更加高效。
渲染
- 简单来说就是将图形或图像数据转换成2D的空间图像。叫做渲染。
顶点数组
- openGL ES只有3中图元:点、线、三角形。把顶点数据存在内存中,存储内存被称为顶点数组。顶点数组存储顶点数据。
顶点缓冲区
- 比存储到内存更加高效,,提前预留一块显存,把顶点数据预先传到显存当中,这块显存称为顶点缓冲区。
管线
- 管线是一个抽象的概念。类似于Jenkins的pipeline流水线。有固定的顺序,且顺序不能别打破。
固定管线
- 可以想象成一个封装好的、具有好多固定的模式。
可编程管线
- 开发者可以自定义封装的管线。
着色器
- shader本质上一一段代码段,用来操作GPU执行。
- 着色器包含固定着色器和自定义着色器两类。固定着色器是有苹果封装好的,开发者只需传入参数即可使用的。自定义着色器是有开发者自己通过GLSL语法自己设计的着色器。
- 开发者可以操作的着色器主要分为2种:顶点着色器和片元着色器。
- 顶点着色器:用来处理顶点之间的变换(旋转、投影、平移)。
- 片元着色器:用来处理每个像素点的颜色计算和填充。
- GLSL:是openGL 自定义着色器的一门语言。
光栅化
- 就是把顶点数据转换成片元的过程。
- 总共分为2打过程:1、确定图形所在像素范围,2、上色
纹理
- 我们说的位图就是纹理,也可以理解为在渲染的时候填充的图片。
混合
- 多种颜色造成重叠,会通过混合算法记性混合。
变换矩阵
- 图形想发生平移、缩放、旋转等操作,就需要使用变换矩阵。
投影矩阵
- 用于将3D左边转换为二维屏幕坐标,实际绘制线条也在二维坐标下。
- 投影方式有2种,正投影和透视投影。
正投影
按比例1:1会绘制,显示2D渲染效果。透视投影
显示3D渲染效果:远小近大。