Pass the device around

This commit is contained in:
Eryn Wells 2018-11-03 10:50:43 -04:00
parent 2361199267
commit 8a664fff70
2 changed files with 16 additions and 3 deletions

View file

@ -12,6 +12,12 @@ import MetalKit
class Renderer: NSObject, MTKViewDelegate {
let device: MTLDevice
init(device: MTLDevice) {
self.device = device
}
func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
print("Size of \(view.debugDescription) will change to \(size)")
}

View file

@ -11,7 +11,7 @@ import MetalKit
class TerrainViewController: NSViewController {
let renderer = Renderer()
var renderer: Renderer!
private var metalView: MTKView! {
return view as? MTKView
@ -19,14 +19,21 @@ class TerrainViewController: NSViewController {
override func loadView() {
guard let device = MTLCreateSystemDefaultDevice() else {
return
fatalError("Couldn't create system default Metal device")
}
let v = MTKView(frame: CGRect(), device: device)
v.translatesAutoresizingMaskIntoConstraints = false
v.widthAnchor.constraint(greaterThanOrEqualToConstant: 640).isActive = true
v.heightAnchor.constraint(greaterThanOrEqualToConstant: 480).isActive = true
v.delegate = renderer
view = v
}
override func viewDidLoad() {
guard let device = metalView.device else {
fatalError("Couldn't get device from Metal view")
}
renderer = Renderer(device: device)
metalView.delegate = renderer
}
}