Windows는 그래픽을 위한 여러 C++/COM API를 제공합니다. 이러한 API는 다음 다이어그램에 나와 있습니다.
- GDI(그래픽 디바이스 인터페이스)는 Windows용 원래 그래픽 인터페이스입니다. GDI는 먼저 16비트 Windows용으로 작성된 다음 32비트 및 64비트 Windows용으로 업데이트되었습니다.
- GDI+는 Windows XP에서 GDI의 후속으로 도입되었습니다. GDI+ 라이브러리는 플랫 C 함수를 래핑하는 C++ 클래스 집합을 통해 액세스됩니다. 또한 .NET Framework는 System.Drawing 네임스페이스에서 관리되는 버전의 GDI+를 제공합니다.
- Direct3D는 3차원 그래픽을 지원합니다.
- Direct2D는 GDI와 GDI+의 후속 버전인 2차원 그래픽용 최신 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는 비트블릿 작업 중에 알파 혼합을 지원하지만 대부분의 GDI 함수는 알파 혼합을 지원하지 않습니다. GDI+는 투명도를 지원하지만 알파 혼합은 CPU에 의해 수행되므로 하드웨어 가속의 이점이 없습니다.
하드웨어 가속 알파 혼합을 사용하면 앤티앨리어싱도 가능합니다. 에일리어싱은 연속 함수를 샘플링할 때 발생하는 하나의 현상입니다. 예를 들어 곡선이 픽셀로 변환되면 별칭을 지정하면 들쭉날쭉한 모양이 발생할 수 있습니다. 별칭 지정으로 인한 아티팩트를 줄이는 모든 기술은 앤티앨리어싱의 한 형태로 간주됩니다. 그래픽에서 앤티앨리어싱은 가장자리를 배경과 혼합하여 수행됩니다. 예를 들어 다음은 GDI에서 그린 원과 Direct2D에서 그린 동일한 원입니다.
direct2d에서 안티앨리어싱 기법의 예시 일러스트레이션
다음 이미지는 각 원의 세부 정보를 보여줍니다.
이전 이미지의 세부 정보는 입니다.
GDI가 그린 원(왼쪽)은 곡선을 따라가는 검은색 픽셀로 구성됩니다. Direct2D(오른쪽)에서 그린 원은 혼합을 사용하여 더 부드러운 곡선을 만듭니다.
GDI는 기하 도형(선 및 곡선)을 그릴 때 앤티앨리어싱을 지원하지 않습니다. GDI는 ClearType을 사용하여 앤티앨리어스 텍스트를 그릴 수 있습니다. 그렇지 않으면 GDI 텍스트도 별칭이 지정됩니다. 가변 선이 글꼴 디자인을 방해하여 텍스트를 읽을 수 없게 하므로 텍스트의 경우 별칭 지정이 특히 두드러집니다. GDI+는 앤티앨리어싱을 지원하지만 CPU에 의해 적용되므로 성능이 Direct2D만큼 좋지 않습니다.
벡터 그래픽
Direct2D는 벡터 그래픽지원합니다. 벡터 그래픽에서 수학 수식은 선과 곡선을 나타내는 데 사용됩니다. 이러한 수식은 화면 해상도에 종속되지 않으므로 임의의 차원으로 확장할 수 있습니다. 벡터 그래픽은 다양한 모니터 크기 또는 화면 해상도를 지원하도록 이미지의 크기를 조정해야 하는 경우에 특히 유용합니다.
다음