学习ios Metal(1)—工程化的metal框架设计

        metal是苹果端设备的一个底层图形API,功能与opengl类似,支持图形渲染和GPU通用计算。而且苹果ios已经弃用opengles,metal将会成为ios的图形开发的唯一选择。metal的基础知识入门,首推Metal By Example系列:http://metalbyexample.com/。博主此后的相关文章,主要给出工程实际遇到的典型问题及其解决方案。

        网络教程往往只关注基础知识的讲解,对于工程化的框架设计没有涉及。自行开发metal相关的图形渲染项目,需要设计一个合适的框架组织metal图形API的代码。这里给出一个简易的框架设计项目,方便大家进行下一步的学习和实际开发,源码地址:https://github.com/sjy234sjy234/Learn-Metal/tree/master/HelloMetal

        与opengl类似,metal的实现代码主要包括3个部分:context, view, renderer。其中,context类用于分配和维护device及其相应的library和commandQueue。view类提供一个继承于UIView的视图,提供支持metal渲染的layer,并提供触摸事件代理,方便图形界面交互的拓展。renderer类用来执行实际的绘制操作,所有的renderer实例都需要一个context实例进行初始化。

        此外,context中可以考虑加入一些图形相关的通用方法作为类方法,例如pixelBuffer转texture的方法等等。renderer是具体完成绘制操作的类,因此可以做很多的拓展,支持各种各样的绘制操作。可以考虑编写一个统一的基类renderer,而实现具体功能的renderer类都由该基类继承而来。

        源码地址已经给出,就不贴代码进行说明了,renderer的基类,博主有时间的时候会修改添加上去的。下面是绘制的两个三角形的效果。

                   

猜你喜欢

转载自blog.csdn.net/sjy234sjy234/article/details/81812029