美文网首页
初探Metal

初探Metal

作者: lkm_0bdc | 来源:发表于2020-08-23 01:41 被阅读0次

Metal简介

Metal和OpenGL ES类似的面向底层的图形编程接口,是渲染高级3D图形和执行数据计算使用图形处理器,可以使用相关的API直接操作GPU.
Metal是IOS平台独有的,意味着它不能像OpenGL ES跨平台使用,但是它能最大的挖掘苹果移动设备的GPU能力,进行复杂的运算。
Metal具有特点:
1.渲染复杂3D环境的游戏
2.视频处理应用程序,比如Final Cut Pro
3.数据处理应用程序,比如那些用于进行科学研究的应用程序

图形管道

图形管道结构.png

图形管道将顶点通过多个阶段,在此期间顶点的坐标在各个空间之间转换。在本教程的后面,您将同时编写顶点着色器和片段着色器。 对于所有非可编程流水线阶段,例如Vertex Fetch,Primitive Assembly和Rasterization,GPU都有专门设计的硬件单元来为这些阶段提供服务。

MTLDevice 图形处理器的金属接口,用于绘制图形或进行并行计算
MTLCommandQueue 将命令缓冲区组织起来由GPU执行的队列
MTLCommandBuffer 为GPU存储要执行的编码命令的容器
MTLCommandEncoder 将GPU命令写入命令缓冲区的编码器。

Metal 命令对象之间的关系

1.命令缓冲区(command buffer)是从命令队列(command queue)创建的
2.命令编码器(command encoders)将命令编码到命令缓冲区中
3.提交命令缓冲区并将其发送到GPU
4.GPU执行命令并将结果呈现为可绘制


Metal 命令对象之间的关系.png
分开你的渲染循环:
  在我们开发Metal 程序时,将渲染循环分为自己创建的类,是非常有用的一种方式,使用单独的类,我们可以更好管理初始化Metal,以及Metal视图委托. 
 在MTKViewDelegate 协议中有2个方法.
 - (void)mtkView:(nonnull MTKView *)view drawableSizeWillChange:(CGSize)size;
   1.每当窗口大小变化或者重新布局(设备方向更改)时,视图就会调用此方法.
   2.视图可以根据视图属性上设置View.preferredFramesPerSecond帧速率(指定时间来调用drawInMTKView方法),
- (void)drawInMTKView:(nonnull MTKView *)view;
    以上的方法,每当视图需要渲染时调用

【主要:Metal只能在真机上运行,需要6s或者以上的设备】

接下来,我们先练手一个简单的案例,通过Metal设置背景色

学习目的

1.理解Metal应用程序
2.如何向GPU发送基本的渲染命令
3.如何获取Metal设备
4.如何配置MetalKit视图
5.如何创建并执行GPU指令
6.显示渲染的内容


案例1流程

这是简单的实现效果的案例,没有涉及到Metal文件,
同时Metal的渲染内容单独封装出来,可以在viewController调用,可以降低复杂性。实现过程比较简单理解,demo我将会放到最下方,不明白的地方,可以下载看看。

案例二-绘制三角形

绘制三角形流程图

本案例中涉及到Metal文件的加载,同时为了确保oc语言和Metal语言共用资源,而单独创建CCShaderTypes.h文件。
在绘制三角形的时候依然使用到图元装配,之前学习的OpenGL ES的图源装配有9种形式,但是在Metal中只有5种形式

Metal

1.MTLPrimitiveTypePoint |点
2.MTLPrimitiveTypeLine |线段
3.MTLPrimitiveTypeLineStrip |线环
4.MTLPrimitiveTypeTriangle | 三角形
5.MTLPrimitiveTypeTriangleStrip |三角型扇

当然绘制三角形在OpenGL ES A也是可以实现的,我将代码一起上传,大家有兴趣可以下载了解,上面都有详细的备注。

Github

相关文章

  • 初探Metal

    Metal简介 Metal和OpenGL ES类似的面向底层的图形编程接口,是渲染高级3D图形和执行数据计算使用图...

  • Metal初探

    Metal介绍 Metal 是苹果在2018年推出用于取代在苹果端的业务的图形编程接口,在2018年之前使用的是基...

  • Metal 初探

    介绍 Metal是2014年WWDC发布的.它是一个针对苹果设备(Mac,iPhone,iPad...)设计的图形...

  • Metal初探

    1.Metal简介 Metal是苹果为了减少对OpenGLES的依赖所封装的框架,在iOS系统中,Metal可以发...

  • metal初探

    前言 metal是iOS底层图形渲染技术,它是利用GPU进行渲染,它允许我们程序员直接操作GPU绘制,所以相比UI...

  • Metal _初探

    简介 Apple为游戏开发者推出了新的平台技术 Metal,该技术能够为 3D 图像提高 10 倍的渲染性能。Me...

  • 一:Metal初探

    Metal介绍 Metal是苹果在2018年推出用于取代在苹果端的业务的图形编程接口,在2018年之前使用的是基于...

  • Metal(1)- 初探

    Metal介绍 Metal是苹果在2018年推出用于取代在苹果端的业务的图形编程接口,在2018年之前使用的是基于...

  • 十三、Metal - 初探

    音视频开发:OpenGL + OpenGL ES + Metal 系列文章汇总[https://www.jians...

  • Metal:Metal Shading Language语法初探

    Metal 语言介绍 Metal 着⾊语⾔ 是⽤来编写 3D 图形渲染逻辑 和 并⾏计算核⼼逻辑的 ⼀⻔编程语⾔。...

网友评论

      本文标题:初探Metal

      本文链接:https://www.haomeiwen.com/subject/fhzsjktx.html