Metal学习(2)
来源:互联网 发布:自学电子琴的软件 编辑:程序博客网 时间:2024/04/27 20:44
MTKView 是NSView/UIView的子类,它有一个嵌入式的Metal层,负责管理framebuffer,渲染目标和draw循环。
•device - 是GPU的抽象,处理command queue的命令,进行渲染等
•command queue - 是一系列的command buffer,它存储着命令的执行顺序,把这个想象成是一个列表装载着你告诉GPU一次要执行的命令。
•command buffer - 存储着command encoder转换后的命令。你可以把它想象为一系列这一帧想要执行的渲染命令。在你提交command buffer之前,没有事情会真正发生,这样给你对事物在何时发生有一个很好的控制。
•command encoder - 把API命令转换成GPU命令,有3种类型的encoder:render(图形渲染),compute(数据并行处理),blit(资源复制操作)。
Render Command Encoder (RCE) 是渲染命令,当你完成后,你只要调用 endEncoding()。MTLRenderPassDescriptor,它能配置什么纹理会被渲染到、什么是clear color,以及其他的配置。
1.创建cocoa应用,只选择swift和use storyboards。
2. 创建一个类型为NSView的MetalView.swift,在storyboard的view controller里选择View,如下图所示,在Identity Inspector里设置它的类为MetalView
import MetalKitclass MetalView: MTKView { required init(coder: NSCoder) { super.init(coder: coder) device = MTLCreateSystemDefaultDevice() } //必须override draw函数 override func draw(_ dirtyRect: NSRect) { if let drawable = currentDrawable, let rpd = currentRenderPassDescriptor { rpd.colorAttachments[0].texture = currentDrawable!.texture rpd.colorAttachments[0].clearColor = MTLClearColor(red: 0, green: 0.5, blue: 0.5, alpha: 1) rpd.colorAttachments[0].loadAction = .clear //在绘制之前,清空纹理 let commandBuffer = device!.makeCommandQueue().makeCommandBuffer() let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: rpd) commandEncoder.endEncoding() commandBuffer.present(drawable) //保证新纹理会在绘制完成后立即出现 commandBuffer.commit() //把事务提交,把任务交给GPU } }
0 0
- Metal学习(2)
- Metal学习(1)
- Metal学习
- 深度学习(六十七)metal forge深度学习库使用
- Metal入门(使用Metal画一个三角形)
- iOS 8 Metal Swift教程 :开始学习
- iOS 8 Metal Swift教程 :开始学习
- iOS 8 Metal Swift教程 :开始学习
- apple深度学习开发包Metal
- Spark钨丝计划:让火花(Spark)更接近灯丝(Rare Metal)详解(2)
- 609 - Metal Cutting(几何+暴力)
- 裸机(Bare Metal)安装CoreOS
- 【Metal API 教程:第二讲】编写Metal Shader并渲染3D模型(上)
- Metron学习11_Metron with HDP 2.5 bare-metal install
- bzoj 4078 [Wf2014]Metal Processing Plant 2SAT 二分图
- HDU 4003--Find Metal Mineral(树形dp)
- hdu 4003 Find Metal Mineral (树形dp)
- hdu 4003 Find Metal Mineral(树形DP)
- React Native 项目常用第三方组件汇总
- C++程序员面试指南第5章
- 数据结构之排序
- 《java编程思想》21章SynchronizationComparisons示例的bug
- CentOS6.5 中安装单机版redis
- Metal学习(2)
- C::输出1-100中出现的9的次数
- C++程序员面试指南第6章
- 卷积神经网络在自然语言处理的应用
- caffe的python接口1——Setup
- ORACLE锁机制深入理解
- 以太坊go-ethereum客户端docker安装(一)
- 百度ECharts使用示例
- C++程序员面试指南第7章