DirectX를 사용하는 고품질 그래픽
Windows 애플리케이션 개발자는 오랫동안 Microsoft DirectX를 사용하여 고품질의 하드웨어 가속 3D 그래픽을 제공해 왔습니다. 이 기술이 1995년에 출시되었을 때 개발자는 3D 그래픽 보드에 대한 추가 비용을 지불하려는 게이머와 전문가를 위해 게임 및 엔지니어링 애플리케이션에 고품질 3D 그래픽을 제공할 수 있었습니다. 이제 가장 저렴한 PC에도 지원되는 3D 그래픽 하드웨어가 포함됩니다.
이러한 그래픽 기능을 활용하기 위해 Windows Vista는 여러 애플리케이션 및 서비스가 GPU(그래픽 처리 장치)의 리소스를 공유할 수 있도록 하는 DirectX용 WDDM(Windows 디스플레이 드라이버 모델) 인프라를 도입했습니다. DWM(데스크톱 창 관리자)은 이 기술을 사용하여 작업 전환에 3D로 애니메이션 효과를 적용하고, 애플리케이션 창의 동적 썸네일 이미지를 제공하고, 데스크톱 애플리케이션에 Windows Aero 유리 효과를 제공합니다.
Windows 7은 애플리케이션 개발자의 손에 더 많은 그래픽 기능을 제공합니다. 새로운 DirectXAPIs 집합을 통해 Microsoft Win32 개발자는 GPU의 최신 혁신을 활용하여 빠르고 확장 가능하며 고품질의 2D 및 3D 그래픽, 텍스트 및 이미지를 애플리케이션에 추가할 수 있습니다. 최신 LCD 디스플레이에서 DirectXAPIs는 색 구성 요소당 8비트보다 큰 색 깊이를 사용하여 바탕 화면 및 창 콘텐츠를 표시할 수 있습니다.
DirectX를 사용하면 Win32 개발자는 이미지 처리와 같은 범용 계산에 GPU의 병렬 처리를 사용할 수 있으며 DirectX 10 하드웨어, DirectX 9 하드웨어, CPU 또는 원격 Windows 컴퓨터로 렌더링할 수 있습니다. 이러한 기술은 개발자가 Win32 코드에 대한 기존 투자를 쉽게 유지할 수 있도록 GDI(Windows Graphics Device Interface) 및 Windows GDI+와 상호 운용되도록 설계되었습니다. ( 2009년 3월 DirectX SDK의 새로운 기능 참조)
이러한 향상된 그래픽 기능은 다음 COM 기반 API에서 제공됩니다.
- 2D 그래픽을 그리기 위한 Direct2D입니다.
- 텍스트 정렬 및 렌더링을 위한 DirectWrite.
- 이미지를 처리하고 표시하기 위한 Windows 이미징 구성 요소입니다.
- 3D 그래픽을 그리기 위한 Direct3D 10.
- Direct3D 11은 3D 그래픽을 그리며 테셀레이션, 텍스처 스트리밍에 대한 제한된 지원 및 범용 컴퓨팅과 같은 차세대 GPU 기술에 대한 액세스를 제공합니다.
- 로컬 및 원격 디스플레이 디바이스 및 GPU 리소스를 관리하고 DirectX와 GDI 간의 상호 운용성을 제공하기 위한 DXGI(DirectX Graphics Infrastructure).
Direct2D
Microsoft Direct3D 10을 기반으로 하는 Direct2D 는 차세대 그래픽 하드웨어의 기능을 사용하면서도 오늘날의 GDI/GDI+ 애플리케이션 및 Direct3D 10 애플리케이션과 잘 상호 운용되는 Win32 개발자에게 즉각적인 모드의 해상도 독립적 2D API를 제공합니다. Direct2D는 GDI 및 GDI+보다 뛰어난 성능을 갖춘 고품질 2D 렌더링을 제공합니다. Win32 개발자는 리소스 및 해당 관리를 더 세밀하게 제어할 수 있습니다. ( Direct2D를 참조하세요.)
DirectWrite
오늘날의 많은 애플리케이션은 고품질 텍스트 렌더링, 해상도 독립적 개요 글꼴 및 전체 유니코드 텍스트 및 레이아웃 지원을 지원해야 합니다. 새 DirectX 구성 요소인 DirectWrite 다음 기능 등을 제공합니다.
- 문서 및 UI에서 텍스트 가독성을 향상시키는 디바이스 독립적 텍스트 레이아웃 시스템입니다.
- GDI, Direct2D 또는 애플리케이션별 렌더링 기술을 사용할 수 있는 고품질의 하위 픽셀 ClearType 텍스트 렌더링입니다.
- Direct2D와 함께 사용되는 경우 하드웨어 가속 텍스트입니다.
- 다중 서식 텍스트 지원.
- OpenType 글꼴의 고급 입력 체계 기능을 지원합니다.
- 지원되는 모든 언어의 텍스트 레이아웃 및 렌더링을 지원합니다.
- GDI 호환 레이아웃 및 렌더링.
DirectWrite 글꼴 시스템은 사용자가 글꼴을 사용하기 위해 별도의 설치 단계를 수행할 필요가 없는 "어디서나 모든 글꼴" 글꼴을 사용할 수 있도록 하고, 수동 또는 프로그래밍 방식 글꼴 검색에 도움이 되도록 글꼴 그룹화의 구조적 계층 구조를 개선합니다. API는 다중 형식 텍스트의 측정, 그리기 및 적중 테스트를 지원합니다. DirectWrite Windows 7에 있는 주요 언어 인프라를 기반으로 하는 전역 및 지역화된 애플리케이션에 대해 지원되는 모든 언어로 텍스트를 처리합니다. 또한 DirectWrite 자체 레이아웃 및 유니코드-문자 모양 처리를 수행하려는 개발자를 위해 낮은 수준의 문자 모양 렌더링 API를 제공합니다. (DirectWrite 참조하세요.)
Windows Imaging 구성 요소
Windows Vista에서 Windows 이미징 구성 요소는 이미지 및 이미지 메타데이터를 사용하기 위한 확장 가능한 프레임워크를 도입했습니다. Windows 이미징 구성 요소에서 지원하는 이미지 형식에는 JPEG, PNG 및 TIFF가 포함되며 지원되는 메타데이터 형식에는 XMP 및 EXIF가 포함됩니다. Windows 7을 사용하면 Windows 이미징 구성 요소는 APPn 세그먼트에 걸쳐 있는 점진적 이미지 디코딩, 확장된 PNG 기능, GIF 메타데이터 및 메타데이터에 대한 지원을 제공하여 표준 규정 준수를 확대합니다. ( Windows 7의 WIC의 새로운 기능 참조)
Direct3D 11
Microsoft Direct3D 11은 Direct3D 10 파이프라인의 기능을 확장하고 Windows 7 게임 및 고급 3D 애플리케이션에 향후 세대의 GPU 및 다중 코어 CPU에 대한 효율적이고 강력하고 확장 가능한 액세스를 제공합니다. Direct3D 10에 있는 기능 외에도 Direct3D 11에는 몇 가지 새로운 기능이 도입되었습니다.
이제 패치 및 세분화 표면 표현에서 확장 가능한 동적 콘텐츠를 지원하기 위해 기하 도형 및 고차 표면을 테셀레이션할 수 있습니다.
여러 CPU 코어에서 사용할 수 있는 병렬 처리 능력을 잘 활용하기 위해 다중 스레딩은 여러 코어에 애플리케이션, 런타임 및 드라이버 호출을 분산하여 프레임당 잠재적인 렌더링 호출 수를 증가합니다. 또한 리소스 만들기 및 관리는 다중 스레드 사용에 최적화되어 스트리밍에 보다 효율적인 동적 텍스처 관리를 가능하게 합니다.
Direct3D 11용 새로운 범용 컴퓨팅 셰이더가 만들어졌습니다. 기존 셰이더와 달리 애플리케이션이 CPU와 관계없이 GPU에서 완전히 더 많은 작업을 수행할 수 있도록 하는 프로그래밍 가능한 파이프라인에 대한 확장입니다. Direct3D 10에서 도입된 DrawAuto는 컴퓨팅 셰이더와 상호 작용하도록 확장되었습니다.
특수화 복잡성을 개선하기 위해 셰이더의 제한된 형태의 동적 연결, 클래스 및 인터페이스와 같은 개체 지향 프로그래밍 구문과 같은 HLSL(상위 수준 음영 언어)이 몇 가지 개선되었습니다. ( 2009년 3월 DirectX SDK의 새로운 기능 참조)
Direct3D 10 개선 사항
Direct3D 10에는 프로그래밍 가능한 셰이더 단계와 고정 함수 단계를 초기화하기 위한 변경할 수 없는 상태 개체가 있는 재설계된 그래픽 파이프라인이 포함되어 있습니다. 상태 개체는 파이프라인을 단순화하고 필요한 상태 변경 횟수를 최소화하여 성능을 향상시킵니다. 이제 셰이더 단계의 프로그래밍 기능은 무제한 셰이더 명령, 일반화된 셰이더 리소스, 정수 및 비트 계산을 지원하는 고급 음영 언어 확장을 제공합니다.
또한 파이프라인은 CPU에서 GPU로 오프로드가 완전히 작동하는 기하 도형 셰이더 단계를 도입합니다. 이 새로운 단계를 사용하면 기하 도형을 만들고, 데이터를 메모리로 스트리밍하고, CPU 상호 작용 없이 기하 도형을 렌더링할 수 있습니다.
다른 몇 가지 개선 사항은 더 빠른 성능을 위해 특별히 설계되었습니다. 조건자 렌더링은 폐색 컬링을 수행하여 렌더링되는 기하 도형의 양을 줄입니다. 인스턴스화 API는 유사한 개체의 여러 인스턴스를 그려서 GPU로 전송해야 하는 기하 도형의 양을 크게 줄일 수 있습니다. 텍스처 배열을 사용하면 GPU가 CPU 개입 없이 텍스처 교환을 수행할 수 있습니다.
이러한 API를 대상으로 할 수 있는 구성 영역을 확장하기 위해 Direct3D 10 및 Direct3D 11에 몇 가지 추가되었습니다. WARP(Windows Advanced Rasterization Platform)는 Direct3D 10용 빠른 다중 코어 확장 가능한 CPU 렌더링을 구현하여 그래픽 하드웨어가 없는 시스템에서 모든 기능을 갖춘 그래픽 렌더링을 지원합니다. Direct3D 10 수준 9라고 하는 새로운 "기능 수준"을 추가하면 Direct3D 10 및 Direct3D 11APIs가 Microsoft Direct3D 9클래스 하드웨어를 구동하여 Direct3D 10 또는 Direct3D 11 애플리케이션이 시장의 거의 모든 컴퓨터 시스템을 대상으로 할 수 있는 구성 수를 확장할 수 있습니다. ( Direct3D 10 그래픽을 참조하세요.)
DirectX/GDI 상호 운용성
Windows Vista에서 DirectX와 GDI를 모두 사용하여 공유 화면으로 렌더링하는 애플리케이션의 동작은 DWM이 켜지거나 꺼져 있는지 여부에 따라 다릅니다. 또한 DWM이 켜진 경우 DirectX와 GDI를 모두 사용하는 애플리케이션은 Windows XP와 Windows Vista에서 다르게 작동합니다. 이로 인해 많은 ISV가 일관된 동작을 보장하기 위해 Windows Vista에서 애플리케이션을 실행할 때 DWM을 사용하지 않도록 설정했습니다. Windows 7의 DirectX가 개선되어 이제 애플리케이션은 DWM을 사용하지 않도록 설정하지 않고도 DirectX와 GDI를 자유롭게 혼합할 수 있습니다. 또한 Windows 7에는 보다 효율적인 Direct3D 10 API를 활용하여 DirectX와 GDI 간의 상호 운용이 필요한 시나리오의 성능이 향상되었습니다. Direct2D 및 GDI 상호 운용 개요를 참조하세요.