예.
Pplu 는 시스템이 여러 모니터로 실행될 때 왜 프로그램이 더 느리게 실행 되는지 궁금 합니다 .
물론, 하나 이상의 모니터를 사용하는 경우 화면에 시스템이 추적 할 항목이 더 있습니다. 프로그램이 작은 모니터보다 큰 모니터에서 더 느리게 실행되는 것과 같은 이유입니다.
모니터가 하나 뿐인 MonitorFromPoint
경우 플래그가 다음과 같은 경우 사소한 것처럼 작동합니다. 모니터가 하나 뿐인 경우
MONITOR_DEFAULTTONEAREST
"이 시점에 가장 가까운 모니터"와 같은 질문에 대답하기 때문입니다. 매우 쉬워집니다.
두 모니터의 크기가 동일하지 않으면 두 모니터의 결합이 직사각형이 아니므로 모든 모니터의 결합에 대한 클리핑이 더 복잡해집니다.
그러나 한 모니터를 565 형식으로 설정하고 다른 모니터를 24bpp로 설정하는 경우와 같이 모니터를 다른 색상 형식으로 잘못 설정하면 다중 모니터에 큰 페널티가 발생합니다.
두 모니터가 동일한 색상 형식을 사용하지 않는 경우, 창을 다른 색상 형식의 창으로 이동하거나 더 나쁜 위치에 놓을 경우, 프로그램은 화면 비트 맵에 DDB 대신 DIB를 사용해야합니다. 다른 색상 형식의 두 모니터). 원칙적으로 프로그램은 "최악의 경우"DIB 만 사용해야합니다. 예를 들어, 한 모니터가 555이고 다른 모니터가 565 인 경우 565 DIB로 충분합니다. 그러나 실제로 대부분의 프로그램은 다른 색상 형식의 모니터를 사용하는 경우 24bpp 또는 32bpp DIB로 대체됩니다.
(을 호출하여 모든 모니터의 색상 형식이 같은지 쿼리합니다
GetSystemMetrics(SM_SAMEDISPLAYFORMAT)
.)
DIB가 다른 색상 형식의 장치에 블리 팅 될 때 형식 변환이 발생하기 때문에 프로그램이 DIB로 비트 맵을 유지하도록하는 것은 최소한 하나의 모니터 (및 아마도 둘 다)에 대해 해당 DIB가 화면에 그려 질 때 형식 변환 DIB 사용 비용이 최적화 비용보다 훨씬 크기 때문에 모든 모니터가 동일한 색상 형식을 사용하지 않을 경우 비활성화되는 기타 최적화 기능도 있습니다.
따라서 아직 설정하지 않은 경우 디스플레이 설정으로 이동하여 모든 모니터를 동일한 색 농도로 설정했는지 확인하십시오. 이 작업을 수행하지 않으면 많은 그래픽 최적화 클래스가 손실됩니다.