성능 최적화: 하드웨어 이용

WPF의 내부 아키텍처에는 하드웨어와 소프트웨어라는 두 가지 렌더링 파이프라인이 있습니다. 이 항목에서는 애플리케이션의 성능 최적화에 대한 결정을 내리는 데 도움이 되는 이러한 렌더링 파이프라인에 대한 정보를 제공합니다.

하드웨어 렌더링 파이프라인

WPF 성능을 결정하는 가장 중요한 요소 중 하나는 렌더링에 바인딩된다는 것입니다. 렌더링해야 하는 픽셀이 많을수록 성능 비용이 커집니다. 하지만 GPU(그래픽 처리 장치)로 오프로드할 수 있는 렌더링이 많을수록 더 많은 성능 이점을 얻을 수 있습니다. WPF 애플리케이션 하드웨어 렌더링 파이프라인은 최소 Microsoft DirectX 버전 7.0을 지원하는 하드웨어에서 Microsoft DirectX 기능을 최대한 활용합니다. Microsoft DirectX 버전 7.0 및 PixelShader 2.0 이상 기능을 지원하는 하드웨어에서는 추가 최적화를 얻을 수 있습니다.

소프트웨어 렌더링 파이프라인

WPF 소프트웨어 렌더링 파이프라인은 전적으로 CPU에 바인딩됩니다. WPF는 CPU의 SSE 및 SSE2 명령 집합을 활용하여 최적화되고 완전한 기능을 갖춘 소프트웨어 래스터라이저를 구현합니다. 하드웨어 렌더링 파이프라인을 사용하여 애플리케이션 기능을 렌더링할 수 없을 때는 항상 소프트웨어로 원활하게 대체됩니다.

소프트웨어 모드에서 렌더링할 때 발생하는 가장 큰 성능 문제는 렌더링하는 픽셀 수로 정의된 채우기 속도와 관련이 있습니다. 소프트웨어 렌더링 모드의 성능이 우려되는 경우 픽셀이 다시 그려지는 횟수를 최소화해 보세요. 예를 들어 배경이 파란색인 애플리케이션이 있는 경우 약간 투명한 이미지를 위에 렌더링하면 애플리케이션의 모든 픽셀이 두 번 렌더링됩니다. 따라서 파란색 배경만 있는 경우에 비해 이미지로 애플리케이션을 렌더링하는 데 걸리는 시간이 두 배입니다.

그래픽 렌더링 계층

애플리케이션이 실행될 하드웨어 구성을 예측하는 것은 매우 어려울 수 있습니다. 그러나 애플리케이션이 다양한 하드웨어에서 실행될 때 각 하드웨어 구성을 최대한 활용할 수 있도록 기능을 원활하게 전환할 수 있는 디자인을 고려하는 것이 좋습니다.

이를 위해 WPF는 런타임에 시스템의 그래픽 기능을 결정하는 기능을 제공합니다. 그래픽 기능은 비디오 카드를 세 가지 렌더링 기능 계층 중 하나로 분류하여 결정됩니다. WPF는 애플리케이션이 렌더링 기능 계층을 쿼리할 수 있도록 하는 API를 노출합니다. 그러면 디바이스에서 지원하는 렌더링 계층에 따라 애플리케이션이 런타임에 다른 코드 경로를 사용할 수 있습니다.

렌더링 계층 수준에 가장 큰 영향을 미치는 그래픽 하드웨어 기능은 다음과 같습니다.

  • 비디오 RAM 그래픽 하드웨어의 비디오 메모리 양에 따라 그래픽을 합성하는 데 사용할 수 있는 버퍼의 크기와 수를 결정합니다.

  • 픽셀 셰이더 픽셀 셰이더는 픽셀별 미치는 영향을 계산하는 그래픽 처리 함수입니다. 표시된 그래픽의 해상도에 따라 표시 프레임별로 수백만 픽셀을 처리해야 할 수도 있습니다.

  • 꼭짓점 셰이더 꼭짓점 셰이더는 개체의 꼭짓점 데이터에서 수학 연산을 수행하는 그래픽 처리 함수입니다.

  • 여러 질감 지원 여러 질감 지원은 3D 그래픽 개체에서 혼합 작업 중에 두 개 이상의 개별 질감을 적용할 수 있는 기능을 나타냅니다. 여러 질감 지원 정도는 그래픽 하드웨어의 여러 질감 단위 수에 따라 결정됩니다.

픽셀 셰이더, 꼭짓점 셰이더, 다중 텍스처 기능은 특정 DirectX 버전 수준을 정의하는 데 사용되며, DirectX 버전 수준은 WPF에서 다양한 렌더링 계층을 정의하는 데 사용됩니다.

그래픽 하드웨어 기능에 따라 WPF 애플리케이션의 렌더링 기능이 결정됩니다. WPF 시스템은 다음 세 개의 렌더링 계층을 정의합니다.

  • 렌더링 계층 0 그래픽 하드웨어 가속이 없습니다. DirectX 버전 수준은 버전 7.0 미만입니다.

  • 렌더링 계층 1 부분적 그래픽 하드웨어 가속을 사용합니다. DirectX 버전 수준은 7.0 이상, 9.0 미만입니다.

  • 렌더링 계층 2 대부분의 그래픽 기능에서는 그래픽 하드웨어 가속을 사용합니다. DirectX 버전 수준은 버전 9.0 이상입니다.

WPF 렌더링 계층에 대한 자세한 내용은 그래픽 렌더링 계층을 참조하세요.

참고 항목