metal-examples-tutorials/ch06/chapter06/MetalView.swift

42 lines
1.1 KiB
Swift
Executable File

//
// MetalView.swift
// chapter06
//
// Created by Marius on 2/10/16.
// Copyright © 2016 Marius Horga. All rights reserved.
//
import UIKit
class MetalView: UIView {
var commandQueue: MTLCommandQueue!
var metalLayer: CAMetalLayer {
return self.layer as! CAMetalLayer
}
override class func layerClass() -> AnyClass {
return CAMetalLayer.self
}
override func didMoveToWindow() {
super.didMoveToWindow()
let device = MTLCreateSystemDefaultDevice()!
commandQueue = device.newCommandQueue()
redraw()
}
private func redraw() {
let drawable = metalLayer.nextDrawable()!
let descriptor = MTLRenderPassDescriptor()
descriptor.colorAttachments[0].clearColor = MTLClearColorMake(0, 1, 1, 1)
descriptor.colorAttachments[0].texture = drawable.texture
let commandBuffer = commandQueue.commandBuffer()
let commandEncoder = commandBuffer.renderCommandEncoder(with: descriptor)
commandEncoder.endEncoding()
commandBuffer.present(drawable)
commandBuffer.commit()
}
}