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 { class Renderer: NSObject, MTKViewDelegate {
let device: MTLDevice
init(device: MTLDevice) {
self.device = device
}
func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) { func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
print("Size of \(view.debugDescription) will change to \(size)") print("Size of \(view.debugDescription) will change to \(size)")
} }

View file

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