Вот скалы заметки о том, как вещи работают под ним.
Экран монитора всегда должен быть связан с so-ca чтобы иметь возможность отображать что угодно, то есть видеокарта может сканировать только одну поверхность в видеопамяти.
Когда приложение полноэкранное (и все было настроено правильно, чтобы разрешить перелистывание), основная поверхность является всего лишь одним из прикладных backbuffers и перевернута на другой буфер для каждого кадра. Это самый эффективный способ представления на экране, но для этого требуется приложение для владения всей областью монитора (т. Е. Всей первичной поверхностью).
Когда нет полноэкранного приложения и DWM выключен, основная поверхность принадлежит ОС, и каждое оконное приложение выполняет блик от приложения backbuffer до первичной поверхности. Этот blit занимает некоторое время GPU для завершения (а также блики от других приложений, видимых на экране), поэтому он не так эффективен, как полноэкранная презентация. XP работал именно так.
Когда DWM создает экран, все становится еще сложнее. Здесь DWM владеет первичной поверхностью и нуждается в рисовании окон приложений. Чтобы это стало возможным, каждое окно имеет связанную поверхность, содержащую его содержимое, называемую поверхностью перенаправления (что позволяет DWM разрешать ореолы окна, эффекты стекла и все эти хорошие вещи). Каждый раз, когда приложение D3D выдает фрейм, он добавляет blit к поверхности перенаправления. Таким образом, должно произойти несколько blits: blit to redirection surface by app, blit от поверхности перенаправления до первичной DWM, что опять-таки накладные расходы по сравнению с полноэкранным.
Обратите внимание, что все дополнительные работы выполняются на графическом процессоре, поэтому это не влияет на производительность ЦП.
Материал читать далее:
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
Из любопытства вы попробовали это на Vista? С включенным DWM я испытал скорость оконного режима, которая была довольно высокой в моей системе в приложении XNA (выше, потому что требуется меньше заполняющей скорости, но дело в том, что она не медленнее). – OregonGhost 2008-11-20 09:45:28
Да, я запускаю Vista с включенным DWM. Я также понимаю, что Vista отключает DWM, когда полноэкранное приложение активно для свободных ресурсов. – smt 2008-11-20 09:52:52
Vista отключает DWM только в том случае, если приложение несовместимо. У меня есть некоторые игры, которые отлично работают с Aero Glass, когда в полноэкранном режиме (видны на других мониторах). Хотя в целом это правда, большинство игр отключает DWM. – OregonGhost 2008-11-20 14:17:37