В настоящее время я работаю над размещением плагинов AU (только OSX). Я использую функцию AUv3:
func requestViewController(completionHandler: @escaping (NSViewController?) -> Void)
Возвращает стандартный NSViewController, который я либо добавляю в окно, либо добавляю как подпредставление.
pluginNode?.auAudioUnit.requestViewController {[unowned self] vc in
if vc == nil {assertionFailure("No VC")}
self.addChild(vc!)
self.view.addSubview(vc!.view)
}
Или:
pluginNode?.auAudioUnit.requestViewController {[unowned self] vc in
if vc == nil {assertionFailure("No VC")}
let window = NSWindow(contentViewController: vc)
self.view.window?.addChildWindow(window, ordered: .above)
}
Это работает отлично, пока представление не использует openGL. Когда у него есть openGL, подпредставление не работает правильно. В зависимости от плагина, проблемы различны для каждого, иногда анимация не отображается, в других случаях события не работают должным образом.
Итак, у меня два вопроса.
Как мне настроить мой view / viewcontroller для принятия подпредставления, которое использует openGL?
Существует ли флаг или какой-либо способ обнаружения, если плагин или
ViewController использует openGL в качестве подпредставления?