OpenGL ES 被设计在跨平台上使用,那意味着你可以用 C++来写 OpenGL ES,然后修改很少的代码就可以跑在其它的平台上。
Metal
Metal 是由苹果公司所开发的 GPU 编程接口,兼顾图形与计算功能,面向底层、低开销的硬件加速,用于代替 OpenGL ES ,OpenGL ES 在 iOS 12 已经被标记为 deprecated 状态。
Apple 认为 OpenGL ES 的跨平台支持做的非常好,但是还没有充分利用 Apple 的硬件优势,所以 Apple 要采用一种全新的方式将软件与硬件结合更完美,所以就有了 Metal。据苹果吹嘘,相对于 OpenGL ES,Metal可以提供超过 10 倍的绘制速度。
Metal 比 OpenGL ES 的优点:
Metal Api 更加 人性化,相比于 OpenGL 使用句柄的操作以及 C 语言的 Api,Metal 是面向对象的;
Metal 的多线程支持,相比于 OpenGL 的上下文与线程的绑定,Metal 是 线程安全 的;
Metal 的性能优于 OpenGL;
Metal 支持 Compute shaders,能让我们使用 GPU 来做一些更加复杂的 并行计算 任务,如机器学习等,而 OpenGL 几乎只能支持与图形图像相关的。
Metal 比 OpenGL ES 的缺点:
Metal 仅支持 Apple 平台,而 OpenGL 是跨平台的;
什么是纹理(Texture)?
纹理是二维图像的映射,可以应用到模型的表面上。纹理可以提供更加细腻的表面效果,如木纹、金属质感等。OpenGL中通过纹理坐标和纹理采样器将纹理映射到模型表面上。
什么是 OpenGL 渲染管线(Pipeline)?
OpenGL 渲染管线就是 OpenGL 的工作流程,指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程。
图形渲染管线可以大致被划分为两个主要部分:第一部分把你的 3D 坐标转换为 2D 坐标;第二部分是把 2D 坐标转变为实际的有颜色的像素。
Shader 是什么
Shader 翻译过来叫做着色器,本质上也是一种程序,这种程序主要用于处理图像信息。Shader 代码并不运行在 CPU 上,而是运行在GPU(图形处理器)上。
顶点着色器用于处理顶点相关计算,如位置变换、法线变换等;片段着色器用于处理每个像素的光照、纹理采样等操作。
根据运行在渲染管线的不同阶段,Shader 主要分为三类:
- Vertex Shader 顶点着色器
- Fragment Shader 片段着色器
- Geometry Shader 几何着色器