Windows 그래픽 아키텍처 개요
Windows는 그래픽을 위한 여러 C++/COM API를 제공합니다. 이러한 API는 다음 다이어그램에 나와 있습니다.
- GDI(그래픽 디바이스 인터페이스)는 Windows용 원래 그래픽 인터페이스입니다. GDI는 먼저 16비트 Windows용으로 작성된 다음, 32비트 및 64비트 Windows용으로 업데이트되었습니다.
- GDI+는 GDI의 후속 프로그램을 Windows XP에 도입되었습니다. GDI+ 라이브러리는 플랫 C 함수를 래핑하는 C++ 클래스 집합을 통해 액세스됩니다. 또한 .NET Framework는 System.Drawing 네임스페이스에서 관리되는 버전의 GDI+를 제공합니다.
- Direct3D는 3D 그래픽을 지원합니다.
- Direct2D는 GDI와 GDI+의 후속 모델인 2D 그래픽을 위한 최신 API입니다.
- DirectWrite 텍스트 레이아웃 및 래스터화 엔진입니다. GDI 또는 Direct2D를 사용하여 래스터화된 텍스트를 그릴 수 있습니다.
- DXGI(DirectX Graphics Infrastructure)는 출력을 위한 프레임 표시와 같은 하위 수준 작업을 수행합니다. 대부분의 애플리케이션은 DXGI를 직접 사용하지 않습니다. 대신 그래픽 드라이버와 Direct3D 간의 중간 계층 역할을 합니다.
Direct2D 및 DirectWrite는 Windows 7에 도입되었습니다. 플랫폼 업데이트를 통해 Windows Vista 및 Windows Server 2008에서도 사용할 수 있습니다. 자세한 내용은 Windows Vista용 플랫폼 업데이트를 참조하세요.
Direct2D가 이 모듈에서 중점적으로 다루는 기능입니다. GDI와 GDI+는 Windows에서 계속 지원되지만 새 프로그램에는 Direct2D 및 DirectWrite가 권장됩니다. 경우에 따라 이러한 기술을 혼합해서 사용하는 것이 더 실용적일 수 있습니다. 이러한 상황에서 Direct2D 및 DirectWrite는 GDI와 상호 운용되도록 설계되었습니다.
다음 섹션에서는 Direct2D의 이점 중 일부에 대해 설명합니다.
하드웨어 가속
하드웨어 가속이라는 용어는 CPU가 아닌 GPU(그래픽 처리 장치)에서 수행하는 그래픽 계산을 나타냅니다. 최신 GPU는 그래픽 렌더링에 사용되는 계산 유형에 매우 최적화되어 있습니다. 일반적으로 CPU에서 GPU로 이동하는 이러한 작업이 많을수록 좋습니다.
GDI는 특정 작업에 대한 하드웨어 가속을 지원하지만 많은 GDI 작업이 CPU에 바인딩됩니다. Direct2D는 Direct3D 위에 계층화되며 GPU에서 제공하는 하드웨어 가속을 최대한 활용합니다. GPU가 Direct2D에 필요한 기능을 지원하지 않는 경우 Direct2D는 소프트웨어 렌더링으로 대체됩니다. 전반적으로 Direct2D는 대부분의 상황에서 GDI 및 GDI+를 능가합니다.
투명성 및 앤티앨리어싱
Direct2D는 완전 하드웨어 가속 알파 혼합(투명성)을 지원합니다.
GDI는 알파 혼합에 대해 제한된 지원을 제공합니다. GDI는 bitblt 작업 중에 알파 혼합을 지원하지만 대부분의 GDI 함수는 알파 혼합을 지원하지 않습니다. GDI+는 투명성을 지원하지만 알파 혼합은 CPU에 의해 수행되므로 하드웨어 가속의 이점을 얻지 못합니다.
하드웨어 가속 알파 혼합 또한 앤티앨리어싱을 지원합니다. 앨리어싱은 연속 함수를 샘플링하여 생성되는 아티팩트입니다. 예를 들어 곡선이 픽셀로 변환되면 앨리어싱으로 인해 모양이 들쭉날쭉해질 수 있습니다. 앨리어싱으로 인해 발생한 아티팩트 수를 줄이는 모든 기술은 앤티앨리어싱의 한 형태로 간주됩니다. 그래픽에서 앤티앨리어싱은 가장자리와 배경을 혼합하여 수행됩니다. 예를 들어 다음은 GDI로 그린 원과 Direct2D로 그린 동일한 원입니다.
다음 이미지는 각 원을 자세히 보여 줍니다.
GDI로 그린 원(왼쪽)은 곡선과 비슷한 검은색 픽셀로 구성됩니다. Direct2D로 그린 원(오른쪽)은 혼합을 사용하여 더 부드러운 곡선을 만듭니다.
GDI는 기하 도형(선 및 곡선)을 그릴 때 앤티앨리어싱을 지원하지 않습니다. GDI는 ClearType을 사용하여 앤티앨리어싱된 텍스트를 그릴 수 있지만, 그렇지 않은 경우 GDI 텍스트도 앨리어싱됩니다. 들쭉날쭉한 선이 글꼴 디자인을 방해하여 텍스트를 읽기 어렵게 만들기 때문에 텍스트의 경우 앨리어싱 효과가 특히 두드러집니다. GDI+는 앤티앨리어싱을 지원하지만 CPU에 의해 적용되므로 성능이 Direct2D만큼 좋지 않습니다.
벡터 그래픽
Direct2D는 ‘벡터 그래픽’을 지원합니다. 벡터 그래픽에서는 수식을 사용하여 선과 곡선을 나타냅니다. 이러한 수식은 화면 해상도에 종속되지 않으므로 임의의 차원으로 스케일링할 수 있습니다. 벡터 그래픽은 다양한 모니터 크기 또는 화면 해상도를 지원하도록 이미지를 스케일링해야 하는 경우에 특히 유용합니다.
다음