Aquí están las notas del acantilado sobre cómo funcionan las cosas debajo.
La pantalla del monitor siempre debe estar asociada con so-ca Lleno de superficie primaria para poder mostrar cualquier cosa, es decir, la tarjeta de video solo puede escanear desde una superficie en la memoria de video.
Cuando la aplicación es a pantalla completa (y todo estaba configurado correctamente para habilitar el volteo), la superficie principal es solo uno de los amortiguadores de respaldo de la aplicación, y volteó a otro amortiguador posterior en cada cuadro. Es la forma más eficiente de presentación en la pantalla, pero requiere que la aplicación sea propietaria de toda el área del monitor (es decir, superficie primaria completa).
Cuando no hay una aplicación de pantalla completa y DWM está desactivado, la superficie primaria es propiedad de OS, y cada aplicación con ventana realiza una descarga desde el backbuffer de la aplicación a una superficie principal. Este blit tarda algo de tiempo de GPU en completarse (así como blits de otras aplicaciones visibles en la pantalla), por lo que no es tan eficiente como la presentación en pantalla completa. XP funcionó de esa manera.
Cuando DWM está componiendo la pantalla, las cosas se complican aún más. Aquí, DWM posee la superficie principal y necesita dibujar ventanas de aplicación allí. Para hacerlo posible, cada ventana tiene una superficie asociada que contiene sus contenidos, llamada superficie de redirección (que permite a DWM habilitar el efecto fantasma de las ventanas, los efectos de vidrio y todas esas cosas buenas). Cada vez que la aplicación D3D emite un marco, agrega un blit a una superficie de redirección. De esta manera, deben ocurrir varios blits: blit a una superficie de redirección por la aplicación, blit de una superficie de redirección a la primaria por DWM, que es, de nuevo, algo de sobrecarga en comparación con pantalla completa.
Nota: todo el trabajo adicional se realiza en la GPU, por lo que no afecta el rendimiento de la CPU.
materia para leer más:
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
Por curiosidad, ¿lo has probado en Vista? Con DWM habilitado, experimenté que la velocidad del modo de ventana era bastante más alta en mi sistema en una aplicación XNA (más alta porque se necesita menos velocidad de relleno, pero el punto es que no es más lento). – OregonGhost
Sí, estoy ejecutando Vista con DWM habilitado. También entiendo que Vista desactiva DWM cuando una aplicación de pantalla completa está activa para liberar recursos. – smt
Vista desactiva DWM solo si la aplicación es incompatible. Tengo algunos juegos que funcionan bien con Aero Glass cuando está en pantalla completa (visible en los otros monitores). Aunque en general eso es cierto, la mayoría de los juegos desactivan DWM. – OregonGhost