Я хотел бы сделать приложение Perl Monitor DPI-Aware Direct2D. Я распространил пример Microsoft "First Direct2D Program" для обработки WM_DPICHANGED
, как описано в Kenny Kerr's MSDN article. Это работает, когда оба монитора используют одну видеокарту, но страдают от сбоев при использовании настройки NVIDIA Optimus моего ноутбука.Per-monitor DPI-Aware: черный оконный сбой с NVIDIA Optimus
я могу воспроизвести тот же глюк, запустив Per-Monitor Aware WPF Sample с этими шагами:
- Различные DPI коэффициент масштабирования на каждом мониторе.
- Включен Optimus (дисплей для ноутбука на встроенной графике, внешний монитор на карте Quadro)
- Приложение запускается на основном дисплее - внешний монитор справа.
- Перетащите его влево, и он правильно обрабатывает изменение DPI.
- Перетащите его обратно вправо. Когда он обрабатывает изменение DPI, часть окна на правом мониторе становится черной. Часть слева по-прежнему рисуется правильно.
(см video of this bug)
Я только видел эту ошибку с выше пример приложения, и, когда я пытаюсь добавить обработчик WM_DPICHANGED Керра к более простому примеру. Подозрительно, у есть другие приложения (Chrome, Visual Studio) показывают аналогичное черное окно, но только временно, если я перетаскиваю между мониторами и максимизую их очень быстро.
Итак - кто-нибудь знаком с этим сбоем? Это какая-то ошибка в драйверах дисплея? Или есть ли что-то другое приложение для его исправления, чего нет в примере кода?
Вы пробовали обновлять драйверы дисплея, если это просто ошибка драйвера? –
Да, я попробовал драйверы Nvidia 354.42 и последний, 368.39. Но (предвосхищая ваши потенциальные будущие вопросы) я попробовал самую старую версию, которую я сохранил, 332.21, и неожиданность - никаких сбоев. (Этот старый драйвер предшествует Windows 10, так что, честно говоря, я удивлен, что он вообще работал). Таким образом, это * проблема с драйвером, но может потребоваться еще некоторое расследование .. – Lack
Тем не менее, у NVIDIA есть ответ на базу знаний [«Почему я вижу артефакты или черные экраны при перетаскивании приложения ...»] (https : //nvidia.custhelp.com/app/answers/detail/a_id/2757). Это говорит о том, что «приложение должно правильно обрабатывать изменения в адаптере дисплея для перехода без перерыва». Я сейчас только запутался - было бы просто, если бы приложение * всегда * должно было явно обрабатывать адаптеры, но сбой происходит только в определенных версиях драйверов и только при изменении размера для изменения DPI. – Lack