Есть ли способ использовать SceneView SceneKit, чтобы отобразить его в ScreenSaverView. Я попробовал несколько вещей, но не могу понять это.
Я знаю, что помещать 3D-графику в заставку не очень хорошая идея, просто сделать это для развлечения.
Вот код У меня сейчас:
import ScreenSaver
import Foundation
import SceneKit
class MainView: ScreenSaverView {
var sceneView: SCNView
// MARK: - Initialization
override init?(frame: NSRect, isPreview: Bool) {
sceneView = SCNView(frame: frame)
super.init(frame: frame, isPreview: isPreview)
sceneView.scene = SCNScene(named: "monkey")!
self.addSubview(sceneView)
}
@available(*, unavailable)
required init?(coder decoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - Lifecycle
override func draw(_ rect: NSRect) {
// Draw a single frame in this function
self.sceneView.draw(bounds)
}
override func animateOneFrame() {
super.animateOneFrame()
// Update the "state" of the screensaver in this function
setNeedsDisplay(bounds)
}
}