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

38 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!
override func didMoveToWindow() {
super.didMoveToWindow()
metalLayer = CAMetalLayer()
metalLayer.device = MTLCreateSystemDefaultDevice()!
metalLayer.frame = layer.frame
layer.addSublayer(metalLayer)
commandQueue = metalLayer.device?.makeCommandQueue()
redraw()
}
private func redraw() {
let drawable = metalLayer.nextDrawable()!
let descriptor = MTLRenderPassDescriptor()
descriptor.colorAttachments[0].clearColor = MTLClearColorMake(0, 0.5, 0.5, 1)
descriptor.colorAttachments[0].texture = drawable.texture
let commandBuffer = commandQueue.makeCommandBuffer()
let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: descriptor)
commandEncoder.endEncoding()
commandBuffer.present(drawable)
commandBuffer.commit()
}
}