Як Windows Aero запобігає розриву екрана?


14

Коли Windows Aero увімкнено, не існує жодного розриву екрана, на відміну від використання теми Basic без Aero.

Чому, схоже, у ігор з вертикальною синхронізацією, здається, набагато більший відставання від введення, ніж коли ви робите щось на робочому столі? Здається, навіть синхронізовані віконні ігри з вимкненою V-синхронізацією, краще, ніж вони були б, якби вони використовували будь-який метод, який вбудований у гру.

Чому і як це відбувається або, здається, трапляється?

Відповіді:


8

Насправді, причина Aero може запобігти сльозотечі без того, щоб примушувати VSYNC у додатку, тому що це менеджер вікон композиції. Він малює робочий стіл і всі вікна асинхронно стосовно будь-якого запущеного додатку.

Тобто, коли ви вмикаєте композицію в Windows Vista / 7 (вона завжди включена в Windows 8), вона намалюватиме всі вікна за допомогою копії останнього зображення, яке було замінено спиною на передню. Композитор (Microsoft називає його DWM, Desktop Window Manager ) складає все, що підтримується VSYNC, і тому що він малює за допомогою копії останнього повністю заміненого зображення переднього буфера для кожного вікна, він ніколи не відображає частково намальовані кадри. Однак це має прикрою побічною дією запобігання дійсно старому програмному забезпеченню, яке було розроблено для того, щоб виключно правильно працювати в передньому буфері - але сучасне програмне забезпечення цього не робить.

У двох словах, DWM додає додатковий шар захисту від розривів. Той, який дозволить будь-якій програмі, що працює в системі, малювати зі швидкістю, незалежно від частоти оновлення дисплея, і все-таки запобігти розриву. У такій системі у віконному режимі єдине, що дозволяє VSYNC у OpenGL або Direct3D - це насправді зменшення використання CPU / GPU.

Ось чому був створений адаптивний VSYNC, ідея полягає в тому, щоб не штрафувати програми, які не можуть підтримувати частоту оновлення дисплея, примушуючи їх до нижчого коефіцієнта частоти оновлення (наприклад, 60 Гц -> 30, 20, 15, 10, 12 , 6, 5, 4, 3, 2, 1), але для обмеження програм, які малюють швидше, ніж монітор, можуть відображатись зображення із надмірною кількістю процесора / GPU.


5

Якщо Aero увімкнено, Менеджер вікон робочого столу використовує подвійну буферизацію :

Функція Windows Aero широко використовує подвійне буферизація для малювання на екрані.

Джерело

У Вікіпедії є така інформація про те, як це використовується з V-синхронізацією для запобігання розриву екрану:

Під час інтервалу вертикального затулення водій наказує відеокарті або швидко скопіювати графічну зону поза екраном в активну область відображення (подвійне буферизація), або розглянути обидві області пам’яті як відображувані, і просто перемикатися між ними вперед і назад (стор. гортаючи).


6
Подвійне буферизація не запобігає розриву, заважає користувачеві бачити речі в процесі виведення. Якщо у вас є подвійний буфер і ви перегортаєте сторінку посередині екрану, то оновлення все одно з’явиться.
Wyzard

Звичайно, ви все одно можете зірвати, якщо ви подвійне буферизуєте неправильно, але справа в тому, що БД можна використовувати для запобігання розриву.
nitro2k01

3

Подвійне буферизація + V-синхронізація за результатами без розриву. Aero використовує цю конфігурацію.


2

DWM (технологія, що забезпечує ефект Aero) робить все на екрані як поверхню D3D (завдяки чому відео можна продовжувати відтворювати на Flip). Ця техніка візуалізації автоматично запобігає розриву , хоча ігровий метод повинен бути кращим, ніж загальний метод DWM (адже це власний двигун). Тож, ймовірно, ігровий метод в першу чергу не такий хороший, або він не оптимізований для вашої конфігурації.


2
Саме по собі використання Direct3D не перешкоджає розриву екрану. Це подвійне буферизація.
bwDraco
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.