区块链技术博客
www.b2bchain.cn

使用Metal来绘制视图内容求职学习资料

本文介绍了使用Metal来绘制视图内容求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

Using Metal to Draw a View’s Contents | Apple Developer Documentation

创建一个MetalKit视图和一个渲染通道来绘制该视图的内容。

简单使用MetalKit更新视图颜色。简单介绍在渲染通道遇到的概念与使用。

翻译术语表

概述

在这个示例中,你将学习如何使用Metal渲染图形内容的基础知识。你将使用MetalKit框架创建一个视图,使用Metal绘制视图的内容。然后,你将对渲染通道编码命令,将视图擦除为背景色。

注意

MetalKit会自动完成窗口系统任务,加载纹理,并处理3D模型。更多信息请参见MetalKit。

准备用于绘制的MetalKit视图

MetalKit提供了一个名为MTKView的类,它是NSView(macOS)或UIView(iOS、tvOS)的子类。MTKView处理了许多在用Metal在屏幕绘制内容的相关细节。

一个MTKView需要对一个Metal设备对象引用,才能在内部创建资源。所以第一步是将视图的device属性设置为一个现有的MTLDevice

_view.device = MTLCreateSystemDefaultDevice();

MTKView的其他属性允许你控制它的行为。要将视图的内容擦除为纯色背景,你可以设置其clearColor属性。(译者注:既然想要用MetalKit渲染内容,就不要使用UIKit修改视图内容,例如设置backgroundColor。)你可以使用MTLClearColorMake函数创建颜色,指定红、绿、蓝和alpha值。

_view.clearColor = MTLClearColorMake(0.0, 0.5, 1.0, 1.0);

因为在这个示例中不会绘制动画内容,所以要配置视图,使它只在需要更新内容时才绘制,例如当视图改变形状时:

_view.enableSetNeedsDisplay = YES;

委托绘制责任

MTKView依赖你的app向Metal发出命令来产生视觉内容。MTKView使用委托模式来通知app何时应该绘制。要接收委托回调,将视图的delegate属性设置为遵循MTKViewDelegate协议的对象。

_view.delegate = _renderer;

委托实现了两个方法:

  • 每当视图大小发生变化时(视图窗口被调整,或设备方向发生改变(iOS)),视图就会调用mtkView:drawableSizeWillChange:方法。这允许你的应用程序根据视图的大小调整渲染的分辨率。
  • 每当需要更新视图内容时,视图就会调用drawInMTKView:方法。在这个方法中,你可以创建了一个命令缓冲区,对命令进行编码,这些命令告诉GPU要绘制的内容,在屏幕上显示的时机,并将该命令缓冲区入队给GPU执行。这有时被称为绘制一帧。你可以把一个帧看成是,生成一个在屏幕上显示的单一图像的所有工作。在一个交互式app中,如游戏,你可能会每秒绘制许多帧。

在这个示例中,AAPLRenderer实现委托方法,并负责绘制。视图控制器创建类这个类的实例,并将其设置为视图的委托。

创建渲染通道描述符

当你绘制时,GPU会把结果存储到纹理中,纹理是包含图像数据的内存块,可供GPU访问。在这个示例中,MTKView创建了你需要绘制到视图中的所有纹理。它创建了多个纹理,这样它就可以在你渲染到另一个纹理时显示一个纹理的内容。

Using Metal to Draw a View’s Contents | Apple Developer Documentation

创建一个MetalKit视图和一个渲染通道来绘制该视图的内容。

简单使用MetalKit更新视图颜色。简单介绍在渲染通道遇到的概念与使用。

翻译术语表

概述

在这个示例中,你将学习如何使用Metal渲染图形内容的基础知识。你将使用MetalKit框架创建一个视图,使用Metal绘制视图的内容。然后,你将对渲染通道编码命令,将视图擦除为背景色。

注意

MetalKit会自动完成窗口系统任务,加载纹理,并处理3D模型。更多信息请参见MetalKit。

准备用于绘制的MetalKit视图

MetalKit提供了一个名为MTKView的类,它是NSView(macOS)或UIView(iOS、tvOS)的子类。MTKView处理了许多在用Metal在屏幕绘制内容的相关细节。

一个MTKView需要对一个Metal设备对象引用,才能在内部创建资源。所以第一步是将视图的device属性设置为一个现有的MTLDevice

_view.device = MTLCreateSystemDefaultDevice();

MTKView的其他属性允许你控制它的行为。要将视图的内容擦除为纯色背景,你可以设置其clearColor属性。(译者注:既然想要用MetalKit渲染内容,就不要使用UIKit修改视图内容,例如设置backgroundColor。)你可以使用MTLClearColorMake函数创建颜色,指定红、绿、蓝和alpha值。

_view.clearColor = MTLClearColorMake(0.0, 0.5, 1.0, 1.0);

因为在这个示例中不会绘制动画内容,所以要配置视图,使它只在需要更新内容时才绘制,例如当视图改变形状时:

_view.enableSetNeedsDisplay = YES;

委托绘制责任

MTKView依赖你的app向Metal发出命令来产生视觉内容。MTKView使用委托模式来通知app何时应该绘制。要接收委托回调,将视图的delegate属性设置为遵循MTKViewDelegate协议的对象。

_view.delegate = _renderer;

委托实现了两个方法:

  • 每当视图大小发生变化时(视图窗口被调整,或设备方向发生改变(iOS)),视图就会调用mtkView:drawableSizeWillChange:方法。这允许你的应用程序根据视图的大小调整渲染的分辨率。
  • 每当需要更新视图内容时,视图就会调用drawInMTKView:方法。在这个方法中,你可以创建了一个命令缓冲区,对命令进行编码,这些命令告诉GPU要绘制的内容,在屏幕上显示的时机,并将该命令缓冲区入队给GPU执行。这有时被称为绘制一帧。你可以把一个帧看成是,生成一个在屏幕上显示的单一图像的所有工作。在一个交互式app中,如游戏,你可能会每秒绘制许多帧。

在这个示例中,AAPLRenderer实现委托方法,并负责绘制。视图控制器创建类这个类的实例,并将其设置为视图的委托。

创建渲染通道描述符

当你绘制时,GPU会把结果存储到纹理中,纹理是包含图像数据的内存块,可供GPU访问。在这个示例中,MTKView创建了你需要绘制到视图中的所有纹理。它创建了多个纹理,这样它就可以在你渲染到另一个纹理时显示一个纹理的内容。

Using Metal to Draw a View’s Contents | Apple Developer Documentation

创建一个MetalKit视图和一个渲染通道来绘制该视图的内容。

简单使用MetalKit更新视图颜色。简单介绍在渲染通道遇到的概念与使用。

翻译术语表

概述

在这个示例中,你将学习如何使用Metal渲染图形内容的基础知识。你将使用MetalKit框架创建一个视图,使用Metal绘制视图的内容。然后,你将对渲染通道编码命令,将视图擦除为背景色。

注意

MetalKit会自动完成窗口系统任务,加载纹理,并处理3D模型。更多信息请参见MetalKit。

准备用于绘制的MetalKit视图

MetalKit提供了一个名为MTKView的类,它是NSView(macOS)或UIView(iOS、tvOS)的子类。MTKView处理了许多在用Metal在屏幕绘制内容的相关细节。

一个MTKView需要对一个Metal设备对象引用,才能在内部创建资源。所以第一步是将视图的device属性设置为一个现有的MTLDevice

_view.device = MTLCreateSystemDefaultDevice();

MTKView的其他属性允许你控制它的行为。要将视图的内容擦除为纯色背景,你可以设置其clearColor属性。(译者注:既然想要用MetalKit渲染内容,就不要使用UIKit修改视图内容,例如设置backgroundColor。)你可以使用MTLClearColorMake函数创建颜色,指定红、绿、蓝和alpha值。

_view.clearColor = MTLClearColorMake(0.0, 0.5, 1.0, 1.0);

因为在这个示例中不会绘制动画内容,所以要配置视图,使它只在需要更新内容时才绘制,例如当视图改变形状时:

_view.enableSetNeedsDisplay = YES;

委托绘制责任

MTKView依赖你的app向Metal发出命令来产生视觉内容。MTKView使用委托模式来通知app何时应该绘制。要接收委托回调,将视图的delegate属性设置为遵循MTKViewDelegate协议的对象。

_view.delegate = _renderer;

委托实现了两个方法:

  • 每当视图大小发生变化时(视图窗口被调整,或设备方向发生改变(iOS)),视图就会调用mtkView:drawableSizeWillChange:方法。这允许你的应用程序根据视图的大小调整渲染的分辨率。
  • 每当需要更新视图内容时,视图就会调用drawInMTKView:方法。在这个方法中,你可以创建了一个命令缓冲区,对命令进行编码,这些命令告诉GPU要绘制的内容,在屏幕上显示的时机,并将该命令缓冲区入队给GPU执行。这有时被称为绘制一帧。你可以把一个帧看成是,生成一个在屏幕上显示的单一图像的所有工作。在一个交互式app中,如游戏,你可能会每秒绘制许多帧。

在这个示例中,AAPLRenderer实现委托方法,并负责绘制。视图控制器创建类这个类的实例,并将其设置为视图的委托。

创建渲染通道描述符

当你绘制时,GPU会把结果存储到纹理中,纹理是包含图像数据的内存块,可供GPU访问。在这个示例中,MTKView创建了你需要绘制到视图中的所有纹理。它创建了多个纹理,这样它就可以在你渲染到另一个纹理时显示一个纹理的内容。

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 使用Metal来绘制视图内容求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们