NSOpenGLView с WantLayer медленно на вторичном дисплее?
Я пытаюсь использовать NSOpenGLView с поддержкой слоя (wantLayer = YES) и заметил проблему с производительностью при запуске приложения на дополнительном дисплее.
Эту проблему проще всего воспроизвести на примере GLEssentials с добавлением self.wantsLayer=YES
в [GLEssentialsGLView awakeFromNib]
,
https://developer.apple.com/library/mac/samplecode/GLEssentials/Introduction/Intro.html
Лучший способ увидеть проблему - это установить дисплей без сетчатки как основной дисплей в ОС и переместить приложение на дисплей сетчатки. Существует значительное замедление частоты кадров. Этого не происходит, когда используется только дисплей Retina, поэтому кажется, что есть какая-то проблема, связанная с дополнительным дисплеем. Это также не происходит, когда wantsLayer = NO
, так что это также связано с тем, что слой поддерживается.
Мы не уверены, является ли это действительной ошибкой ОС, или требуется какая-то оптимизация, которую необходимо выполнить при переключении дисплеев, которых просто нет.
Есть идеи, если есть хороший обходной путь / техника? (К вашему сведению - я знаю о прозрачном наложении окон и хотел бы избежать этого, если это вообще возможно.)
1 ответ
К вашему сведению, это было зарегистрировано как проблема радара и помечено как исправленная в следующей основной версии ОС - 10.12 Sierra. Коллега подтвердил исправление.