2016-04-19 7 views
2

Ich versuche, eine Layer-Backed NSOpenGLView (willersLayer = YES) verwenden und ein Leistungsproblem festgestellt, wenn die Anwendung auf einer sekundären Anzeige ausgeführt wird.NSOpenGLView mit willersLayer ist langsam auf der sekundären Anzeige?

Das Problem wird am einfachsten mit dem GLEssentials-Beispiel reproduziert und self.wantsLayer=YES in [GLEssentialsGLView awakeFromNib] hinzugefügt.

https://developer.apple.com/library/mac/samplecode/GLEssentials/Introduction/Intro.html

Der beste Weg, um das Problem zu sehen, ist einen Nicht-Retina-Display als primäre Anzeige in dem O zu setzen und die Anwendung auf den Retina-Display bewegen. Es gibt eine deutliche Framerate-Verlangsamung. Dies passiert nicht, wenn nur mit einem Retina-Display verwendet wird, so dass es scheint, dass es ein Problem gibt, das spezifisch für eine sekundäre Anzeige ist. Es passiert auch nicht, wenn wantsLayer = NO, so dass es auch Layer-Backed bezogen wird.

Wir sind nicht sicher, ob dies ein tatsächlicher Betriebssystemfehler ist, oder ob es eine Optimierung gibt, die beim Wechseln von Anzeigen vorgenommen werden muss, die gerade nicht vorhanden ist.

Irgendwelche Ideen, wenn es eine gute Workaround/Technik gibt? (FYI - ich bin mir der transparenten Fensterüberlagerung bewusst und möchte das, wenn überhaupt möglich vermeiden.)

Antwort

0

FYI das wurde als ein Radar-Problem archiviert und in der nächsten Haupt-Betriebssystemversion - 10.12 Sierra - behoben. Ein Mitarbeiter hat den Fix validiert.

Verwandte Themen