NSViewController с OpenGL Subview - Плагины аудиоустройств - PullRequest
0 голосов
/ 20 марта 2019

В настоящее время я работаю над размещением плагинов 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, подпредставление не работает правильно. В зависимости от плагина, проблемы различны для каждого, иногда анимация не отображается, в других случаях события не работают должным образом.

Итак, у меня два вопроса.

  1. Как мне настроить мой view / viewcontroller для принятия подпредставления, которое использует openGL?

  2. Существует ли флаг или какой-либо способ обнаружения, если плагин или ViewController использует openGL в качестве подпредставления?

...