前言
最近的工作内容主要是利用Metal实现一个美颜相机,对于没有GPU编程经验的我算是一个挑战了,这一个多月以来也的确学到了很多的东西,于是想趁着新鲜劲把Metal相关的东西用文字记录下来,同时也希望这几篇文章可以帮到一些初学Metal的人。
Metal简介
Metal是苹果2014年推出的一套相面向底层的与GPU交互的API,类似OpenGL,与OpenGL不同的是Metal只能运行在苹果平台上,虽然不支持跨平台,但Metal能够充分利用苹果的硬件特性,性能也会优与OpenGL
注意:iPhone5s,iPad Air之后的机型才能调用Metal的API。
CPU vs GPU
既然Metal是与GPU交互的API,这里就简单的介绍一下GPU,这里与我们熟悉的CPU做一下对比。
CPU | GPU |
---|---|
核心少,运算速度快,可以执行复杂的任务 | 核心多,可以同时进行大量的运算,但只能执行简单的任务 |
CPU和GPU由于硬件设计的不同,担当的角色也不一样,CPU的结构更加复杂,能够解释更为复杂的计算机指令比如逻辑判断,跳转。GPU由于具有大量的核心,可以同时进行大量相互无依赖的运算,比如游戏中的图像渲染。
利用GPU进行图形绘制
利用GPU进行图像渲染只要涉及到两种着色器(Shader),顶点着色器(Vertex Shader),片段着色器(Fragment Shader)。
顶点着色器
何为顶点,如果你对游戏有兴趣,你一定不会对多边形这个词陌生,游戏种的3D模型正是由无数个的多边形绘制而成,最少三个顶点就可以构成一个平面,这些个顶点其实就是三维空间中的点,顶点着色器主要就是用来处理这些顶点,比如绘制直线或者平面。
片段着色器
在游戏中,经常能听到一个叫贴图的名词,或者叫做纹理,英文为Texture,当利用顶点着色器在三维空间中绘制完平面后,你可以通过顶点所对应的贴图坐标从贴图那获取相应的颜色信息,这样一个漂亮的平面就算渲染完成了。
图像渲染的过程就如流水线一样,首先通过顶点着色器,再通过片段着色器。有关顶点着色器和片段着色器的内容,就简单介绍到这里,如果还是对着色器一知半解也没有关系,后续的教程会对着色器进行更详细的介绍。
小结
- Metal是苹果提供的一套面向GPU编程的API
- 相对与CPU,GPU可以并行地执行大量相互无依赖的运算
- 图像渲染需要顶点着色器和片段着色器
标签:iOS, Metal, GPU, Shader