Да.
Pplu задается вопросом, почему программы работают медленнее, когда система работает с несколькими мониторами.
Ну, во-первых, конечно, когда у вас более одного монитора, на экране появляется больше информации, которую система может отслеживать. По той же причине программы работают на большом мониторе медленнее, чем на маленьком.
И если есть только один монитор, то такие функции, как MonitorFromPoint
становятся тривиальными, если флаг напоминает MONITOR_DEFAULTTONEAREST
, потому что, когда есть только один монитор, отвечая на вопросы типа «Какой монитор ближе всего к этой точке»? становится очень легко.
Если ваши два монитора не имеют одинаковые размеры, объединение двух мониторов не будет прямоугольным, что усложнит ограничение на объединение всех мониторов.
Но я подозреваю, что большое наказание для нескольких мониторов срабатывает, если вы допустили ошибку при настройке мониторов на разные цветовые форматы, например, если вы установили один монитор в формат 565, а другой - 24bpp.
Если два монитора не используют один и тот же цветовой формат, программы будут вынуждены использовать DIB вместо DDB для растровых изображений на экране, если окно перемещается в окно с другим цветовым форматом (или, что еще хуже, расположено так, что оно колеблется) два монитора с разными цветовыми форматами). В принципе, программы должны использовать только «наихудший» DIB; например, если один монитор 555, а другой 565, тогда будет достаточно 565 DIB. На практике, однако, большинство программ просто используют 24-битный или 32-битный DIB, когда сталкиваются с мониторами с разными цветовыми форматами.
(Вы запрашиваете, все ли мониторы имеют одинаковый цветовой формат, вызывая GetSystemMetrics(SM_SAMEDISPLAYFORMAT)
.)
Поскольку преобразование формата происходит, когда DIB подключается к устройству с другим цветовым форматом, принуждение программы сохранять свои растровые изображения в качестве DIB означает, что по крайней мере для одного из мониторов (и, вероятно, обоих) вы подвергнетесь преобразование формата, когда этот DIB рисуется на экране.
Существует также несколько разных оптимизаций, которые отключаются, когда не все ваши мониторы используют один и тот же цветовой формат, потому что стоимость использования DIB перевешивает экономию от оптимизации.
Поэтому, если вы этого еще не сделали, зайдите в настройки дисплея и убедитесь, что все мониторы установлены на одинаковую глубину цвета. Если вы этого не сделаете, большой класс графических оптимизаций будет потерян.