Hier sind die Klippe Hinweise, wie die Dinge unterhalb arbeiten.
Monitor-Bildschirm muss immer so-ca zugeordnet werden Die Grafikkarte kann nur eine Oberfläche im Videospeicher abtasten.
Wenn die Anwendung Vollbild ist (und alles korrekt eingerichtet wurde, um das Spiegeln zu ermöglichen), ist die primäre Oberfläche nur einer der Backbuffer der Anwendung und wird in jedem Frame zu einem anderen Backbuffer gekippt. Es ist die effizienteste Art, auf dem Bildschirm zu präsentieren, aber es erfordert eine Anwendung, um den gesamten Überwachungsbereich (d. H. Die gesamte primäre Oberfläche) zu besitzen.
Wenn es keine Vollbildanwendung gibt und DWM deaktiviert ist, gehört die primäre Oberfläche dem Betriebssystem, und jede gefensterte Anwendung führt einen Blit vom Anwendungsrückpuffer zu einer primären Oberfläche aus. Dieses Blit benötigt etwas Zeit für die Erstellung von GPUs (sowie Blits aus den anderen Anwendungen, die auf dem Bildschirm sichtbar sind). Es ist also nicht so effizient wie die Vollbilddarstellung. XP hat so funktioniert.
Wenn DWM den Bildschirm erstellt, werden die Dinge noch komplizierter. Hier besitzt DWM die primäre Oberfläche und muss dort Anwendungsfenster zeichnen. Um dies zu ermöglichen, hat jedes Fenster eine zugehörige Oberfläche, die seinen Inhalt enthält, die so genannte Redirection-Oberfläche (die DWM ermöglicht, Fenster-Ghosting, Glaseffekte und all diese guten Dinge zu aktivieren). Jedes Mal, wenn die D3D-Anwendung einen Frame ausgibt, fügt sie einer Umleitungsoberfläche ein Blit hinzu. Auf diese Weise müssen mehrere Blits passieren: Blit zu einer Umleitung Oberfläche von der App, Blit von einer Umleitung Oberfläche zum primären von DWM, die wiederum einige Overhead im Vergleich zu Vollbild ist.
Beachten Sie, dass alle zusätzlichen Arbeiten auf der GPU ausgeführt werden, so dass die CPU-Leistung nicht beeinträchtigt wird.
Stuff weiter zu lesen:
http://blogs.msdn.com/greg_schechter/archive/2006/03/19/555087.aspx
http://blogs.msdn.com/greg_schechter/archive/2006/05/02/588934.aspx
http://blogs.msdn.com/greg_schechter/archive/2006/03/05/544314.aspx
Aus Neugier, haben Sie das auf Vista versucht? Mit DWM aktiviert, erlebte ich die Fenstermodus-Geschwindigkeit auf meinem System in einer XNA-Anwendung eher höher (höher, weil weniger Füllrate benötigt wird, aber der Punkt ist, dass es nicht langsamer ist). – OregonGhost
Ja, ich verwende Vista mit aktiviertem DWM. Ich verstehe auch, dass Vista DWM deaktiviert, wenn eine Vollbildanwendung aktiviert ist, um Ressourcen freizugeben. – smt
Vista deaktiviert DWM nur, wenn die Anwendung inkompatibel ist. Ich habe einige Spiele mit Aero Glass im Fullscreen (sichtbar auf den anderen Monitoren). Obwohl das im Allgemeinen der Fall ist, deaktivieren die meisten Spiele DWM. – OregonGhost