metal-examples-tutorials/ch02/chapter02/MetalView.swift

31 lines
978 B
Swift

//
// MetalView.swift
// chapter02
//
// Created by Marius on 1/9/16.
// Copyright © 2016 Marius Horga. All rights reserved.
//
import MetalKit
class MetalView: MTKView {
required init(coder: NSCoder) {
super.init(coder: coder)
device = MTLCreateSystemDefaultDevice()
}
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()
}
}
}