背景
使用画圆的方法,将大小不同的圆叠加起来形成一条笔迹,一条笔迹大概有成百上千个圆组成,一个白板上能显示上千条的笔迹,要求把这么多的笔迹在最短的时间内绘制出来,通过调研CAShapeLayer。CGContext的绘制方式都满足不了这样的性能要求,主要是算法太差劲了,另外同时绘制的笔迹太多,出现的了严重的性能问题。但当时其他端用了这个算法,也有性能问题,但由于各端底层绘制的差异,其他端性能问题表现并没有IOS端这么明显
调研
经过调研发现高性能的绘制图形的框架在IOS中,有openGL,metal两种底层框架可以很好的实现,并且通过demo测试发现性能都不错
什么是openGL
OpenGL是由硅谷图形公司(Silicon Graphics Inc.,简称SGI)发布,并由OpenGL架构审查委员会(OpenGL ARB)负责维护和扩充的。OpenGL最初是SGI公司为其图形工作站开发的一种三维图形机制,后发展成为跨平台的开放标准。随着OpenGL的发展,其控制权于2006年7月被交给了Khronos Group
什么是metal
Metal是Apple为iOS平台推出的高性能图形渲染框架,旨在最大化地挖掘苹果移动设备的GPU能力。它于2014年首次发布,并在后续版本中不断优化和扩展。Metal通过减少GPU驱动的工作量,显著降低CPU消耗,同时提供高效的GPU访问和多线程支持,使得游戏和图形应用的性能得到显著提升。
openGL VS metal
1,openGL严格只是一套协议,经过打印发现底层还是用metal来实现的,经过打印发现苹果封装了这样的一个类AppleMetalGLRenderer
2,openGL在一些早期的iPad上各种缓存的支持度有限,但是我们公司的应用主体设备很多就是早期的ipad
3,openGL的API已经被标记为废弃状态了,后续只能用Metal了
Metal的应用场景都有哪些
1,视频内容渲染
2,游戏开发
3,图形绘制
4,文字绘制
5,高性能的计算
6,图像编辑,美化等等
知识点
Metal Shading Language
library
顶点
索引
渲染队列
渲染管线
纹理
drawable
NDC坐标
UV坐标
MTLBuffer
MTLCommdBuffer
MTLRenderEncoder
MTLComputeEncoder
parallRenderEncoder
parallComputerEncoder
Sampler 采样器
融合 blend
抗锯齿
多重采样(MSAA)和超采样(SSAA)
深度检测
透明度检测
光栅化
顶点着色器
片源着色器
CAMetalLayer
MTKView
视频渲染流程
。。。