Direct2D 정보
이 항목에서는 Win32 개발자에게 뛰어난 성능과 시각적 품질로 2D 그래픽 렌더링 작업을 수행할 수 있는 기능을 제공하는 API인 Direct2D를 소개합니다.
Direct2D란?
Direct2D는 2차원 기하 도형, 비트맵 및 텍스트에 대한 고성능 및 고품질 렌더링을 제공하는 하드웨어 가속 즉시 모드 2차원 그래픽 API입니다. Direct2D API는 GDI, GDI+또는 Direct3D를 사용하는 기존 코드와 상호 운용되도록 설계되었습니다.
Direct2D는 주로 다음 개발자 클래스에서 사용하도록 설계되었습니다.
- 대규모 엔터프라이즈 규모의 네이티브 애플리케이션 개발자.
- 다운스트림 개발자가 사용할 제어 도구 키트 및 라이브러리를 만드는 개발자.
- 2D 그래픽의 서버 쪽 렌더링이 필요한 개발자.
- Direct3D 그래픽을 사용하고 메뉴, UI(사용자 인터페이스) 요소 및 HUD(헤드업 디스플레이)에 대한 간단한 고성능 2D 및 텍스트 렌더링이 필요한 개발자.
Direct2D를 사용하는 이유
Microsoft Windows에서 새 2차원 그래픽 API를 만드는 주요 동기는 다음과 같습니다.
- Windows 사용자가 익숙한 시각적 풍요로움의 증가 수준에 보조를 맞추기 위해
- 개발자가 실행 중인 PC의 그래픽 처리 하드웨어로 직접 스케일링되는 2D 렌더링 코드를 작성할 수 있도록 합니다.
- 개발자가 서비스 컨텍스트에서 실행할 수 있는 2D 그래픽을 렌더링하기 위한 코드를 작성할 수 있도록 합니다.
최근 몇 년 동안 최종 사용자는 디지털 환경에서 더 큰 시각적 충실도를 기대하기 시작했습니다. 이러한 추세는 가전제품에 반영됩니다. GPS 장치, 미디어 재생 장치, 휴대폰 및 디지털 카메라는 해마다 지속적으로 풍부한 환경을 제공합니다. 이러한 추세는 영화, TV, 비디오 게임 및 웹에서 그래픽 콘텐츠의 다양성에서도 볼 수 있습니다. 이러한 변경 사항에 보조를 맞추기 위해 개발자는 기존 Windows 애플리케이션을 다음 수준의 시각적 풍요로움으로 끌어올림을 지속적으로 요청합니다.
최신 Windows PC의 그래픽 프로세서는 비디오 게임 그래픽의 발전과 Windows Media Center 및 Aero와 같은 Windows 환경의 일부에 따라 꾸준히 진화하고 있습니다. 일부 Windows 애플리케이션은 Microsoft Direct3D 및 WPF(Windows Presentation Foundation)를 사용하여 최신 GPU를 활용할 수 있습니다. Direct3D는 고급 3D 그래픽 애플리케이션을 제공하고 WPF는 .NET 개발자의 요구를 해결하지만 GDI 및 GDI+를 기반으로 하는 렌더링 코드의 기존 코드베이스가 크거나 Direct3D 기반 애플리케이션에 고품질 2D 그래픽을 통합하려는 개발자에게는 차이가 있습니다.
마지막으로, 서비스에서 사용할 수 있는 그래픽 API의 필요성은 엔터프라이즈 및 웹 개발 시나리오에서 작업하는 개발자에게 새로운 요구 사항이 되었습니다. 기존 렌더링 API는 단일 사용자 세션에서 클라이언트 쪽 렌더링에 중점을 줍니다. 따라서 서비스 컨텍스트에서 사용할 때 견고성과 확장성 영역에서 부족할 수 있습니다. 이 문제를 해결하려면 새 API가 필요합니다.
최대 가용성의 고성능
Direct2D는 Direct3D 10.1 API를 사용하여 빌드된 사용자 모드 라이브러리입니다. 즉, Direct2D 애플리케이션은 최신 일반 GPU에서 하드웨어 가속 렌더링의 이점을 누릴 수 있습니다. 또한 Direct3D 10 수준 9 렌더링을 사용하여 이전 Direct3D 9 하드웨어에서도 하드웨어 가속을 수행할 수 있습니다. 이 조합은 기존 Windows PC의 그래픽 하드웨어에서 뛰어난 성능을 제공합니다.
참고
Windows 8 Direct2D는 Direct3D 11.1 API를 사용하여 빌드됩니다.
다음 다이어그램은 Direct2D의 계층화된 아키텍처를 보여줍니다.
하드웨어 가속을 사용할 수 없는 시나리오의 경우 Direct2D에는 고성능 소프트웨어 래스터라이저가 포함되어 있습니다. 소프트웨어에서 렌더링할 때 Direct2D를 사용하는 애플리케이션은 GDI+ 및 유사한 시각적 품질보다 훨씬 더 나은 렌더링 성능을 경험합니다. 소프트웨어 래스터라이저는 서비스 컨텍스트에서도 사용하도록 설계되었습니다.
Direct2D를 사용하여 렌더링되는 콘텐츠는 Windows 7 운영 체제의 RDP(원격 데스크톱 프로토콜) 인프라를 사용하여 원격으로 표시할 수도 있습니다. 개발자는 렌더링이 디스플레이 컴퓨터의 GPU에 의해 처리되는지 또는 로컬로 렌더링되고 비트맵으로 전송되는지 여부를 선택할 수 있습니다. 이 선택은 필요한 채우기 비율 및 렌더링되는 그래픽 기본 형식의 수량에 따라 선택할 수 있습니다. 디스플레이 컴퓨터가 Windows 7 이전의 운영 체제를 실행하는 경우 네트워크를 통해 비트맵을 전송하여 원격 디스플레이 렌더링을 수행합니다.
Direct2D는 소프트웨어 대체, 원격 데스크톱 및 서비스 렌더링을 제공하여 Direct3D의 성능과 고가용성을 결합하는 단일 API를 제공하여 개발자가 다양한 시나리오에서 고성능 렌더링을 위한 단일 구현을 수행할 수 있도록 합니다.
시각적 품질
그래픽에 Direct2D를 사용하는 애플리케이션은 GDI를 사용하여 달성할 수 있는 것보다 더 높은 시각적 품질을 제공할 수 있습니다. Direct2D는 기본형별 앤티앨리어싱을 사용하여 렌더링된 콘텐츠에서 더 매끄럽게 보이는 곡선과 선을 제공합니다. 또한 2차원 기본 형식을 렌더링할 때 투명도 및 알파 혼합을 완전히 지원합니다. 다음 이미지는 GDI(왼쪽)를 사용하여 렌더링된 별칭이 지정된 콘텐츠와 Direct2D에서 렌더링한 앤티앨리어스된 콘텐츠(오른쪽)를 비교합니다.
개발자는 벡터 그래픽의 별칭 렌더링을 지정할 수 있습니다. 이는 포인터 또는 눈금자와 같은 UI 요소, 출력의 GDI 스타일이 일치해야 하는 경우 또는 다중 샘플 앤티앨리어싱 또는 기타 메커니즘을 통해 렌더링 프로세스에서 앤티앨리어싱을 다운스트림으로 수행하는 경우와 같이 하드 픽셀 경계에 맞추기가 필요한 시나리오에서 사용됩니다.
상호 운용성
GDI 및 Direct3D와의 표면 수준 상호 운용성을 통해 개발자가 Direct2D 기반 렌더링을 보다 쉽게 통합할 수 있습니다. 주로 GDI, GDI+또는 Direct3D를 사용하여 콘텐츠를 렌더링하는 애플리케이션은 Direct2D를 사용하여 애플리케이션의 특정 영역을 렌더링하고 시간이 지남에 따라 주로 플러그 인 또는 레거시 확장성을 위해 GDI를 사용하여 Direct2D를 통해 렌더링이 수행되는 모델로 이동할 수 있습니다.
또한 Direct2D를 사용하면 고품질 텍스트 및 Microsoft WIC(Windows 이미징 구성 요소)의 고급 이미징 기능에 DirectWrite 쉽게 사용할 수 있습니다.
Direct2D 상호 운용성에 대한 자세한 내용은 Direct2D SDK의 상호 운용성 섹션을 참조하세요.
요약
Microsoft Direct2D를 사용하면 개발자가 GDI보다 향상된 시각적 품질과 최신 GPU로 스케일링되는 성능 특성을 제공하는 2차원 그래픽 기능을 애플리케이션에 빌드할 수 있습니다. Direct2D 상호 운용성 모델을 사용하면 개발자가 GDI, GDI+또는 Direct3D 기반 렌더링과 함께 애플리케이션의 일부를 한 번에 선택적으로 마이그레이션할 수 있습니다.
관련 항목