Pass the device around
This commit is contained in:
parent
2361199267
commit
8a664fff70
2 changed files with 16 additions and 3 deletions
|
@ -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)")
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue