DirectX
(DirectX에서 넘어옴)
| 개발자(팀) | Microsoft |
|---|---|
| 초기 릴리즈 | 1995년 9월 30일 |
| 최신버전 | DirectX 12 Ultimate (2020년 3월) |
| 플랫폼 | Microsoft Windows, Xbox |
| 종류 | API |
| 라이센스 | 독점 소프트웨어 (EULA) |
| 홈페이지 | DirectX Developer Blog |
DirectX(다이렉트엑스)는 마이크로소프트 플랫폼에서 멀티미디어, 특히 게임 프로그래밍과 비디오 처리를 위해 설계된 API(응용 프로그램 프로그래밍 인터페이스)의 집합이다.
개요
본래 Windows 95 시절, DOS 기반 게임들이 Windows 환경으로 넘어오면서 발생하는 하드웨어 직접 제어의 어려움을 해결하기 위해 'Windows Game SDK'라는 이름으로 시작되었다. 현재는 Windows 운영체제와 Xbox 콘솔 게임 개발의 핵심 기술로 자리 잡았다.
주요 구성 요소
DirectX는 다음과 같은 여러 API로 구성된다.
- Direct3D: 3D 그래픽 가속 기능을 제공하는 가장 핵심적인 구성 요소.
- Direct2D: 2D 그래픽 및 텍스트 렌더링을 위한 API. (구 DirectDraw 대체)
- DirectCompute: GPGPU(범용 GPU 컴퓨팅)를 위한 API.
- XAudio2: 낮은 지연 시간과 신호 처리에 최적화된 오디오 API. (구 DirectSound 대체)
- XInput: Xbox 컨트롤러 등 차세대 입력 장치를 지원하는 API. (구 DirectInput 대체)
- DirectStorage: 고속 NVMe SSD의 성능을 활용하여 게임 로딩 속도를 획기적으로 줄이는 기술.
역사 및 주요 버전
DirectX는 1995년 Windows 95의 출시와 함께 'Windows Game SDK'라는 이름으로 시작되었으며, 이후 지속적인 업데이트를 통해 Windows 플랫폼의 표준 멀티미디어 API로 자리 잡았다.
- DirectX 1.0 (1995년 9월): Windows 95용 'Windows Game SDK'로 처음 출시되었다. DirectDraw(2D 그래픽), DirectSound(오디오), DirectInput(입력), DirectPlay(네트워크) 등 기본적인 기능을 포함하고 있었다.
- DirectX 2.0 (1996년 6월): Direct3D가 처음으로 도입되어 3D 그래픽 가속을 지원하기 시작했다. Windows 95 OSR2와 Windows NT 4.0에 포함되었다.
- DirectX 3.0 (1996년 9월): DirectSound3D(DS3D)가 추가되어 입체 음향 효과를 지원하게 되었다. Windows NT 4.0 SP3에서 지원되었다.
- DirectX 5.0 (1997년 8월): (버전 4.0은 개발 취소) DrawPrimitive 등 Direct3D의 기능이 대폭 강화되었으며, MMX 명령어 세트 지원, 포스 피드백(DirectInput) 지원 등이 추가되었다.
- DirectX 6.0 (1998년 8월): 멀티텍스처링, 범프 매핑 등 고급 3D 렌더링 기술이 추가되었으며, 고품질 음악 재생을 위한 DirectMusic API가 도입되었다. Dreamcast의 Windows CE 기반 OS에도 사용되었다.
- DirectX 7.0 (1999년 9월): 하드웨어 T&L(Transform and Lighting) 지원이 가장 큰 특징이다. CPU가 처리하던 좌표 변환과 조명 연산을 GPU가 담당하게 되어 성능이 비약적으로 향상되었다. Visual Basic 지원도 추가되었다.
- DirectX 8.0 (2000년 11월): 프로그래머블 셰이더(Programmable Shader)가 도입된 혁명적인 버전이다. 정점 셰이더(Vertex Shader) 1.0과 픽셀 셰이더(Pixel Shader) 1.0을 통해 개발자가 그래픽 파이프라인을 직접 제어할 수 있게 되었다. DirectDraw와 Direct3D가 'DirectX Graphics'로 통합되었다.
- DirectX 9.0c: Windows XP 시대를 풍미한 버전으로, 셰이더 모델 3.0을 지원하며 오랫동안 표준으로 사용되었다.
- DirectX 10: Windows Vista 전용으로 출시되어 구조적인 변화를 꾀했으나, XP 미지원으로 인해 보급이 더뎠다. 기하 셰이더(Geometry Shader)가 추가되었다.
- DirectX 11: 테셀레이션(Tessellation), 멀티스레딩 렌더링, GPGPU(DirectCompute) 등을 지원하며 그래픽 품질과 효율성을 크게 향상시켰다. Windows 7의 성공과 함께 널리 보급되었다.
- DirectX 12: 하드웨어에 대한 더 낮은 수준(Low-level)의 접근을 허용하여 CPU 오버헤드를 줄이고 성능을 극대화했다.
- DirectX 12 Ultimate: DirectX 12의 확장판으로, 실시간 레이 트레이싱(DXR), 가변 비율 셰이딩(VRS), 메쉬 셰이더(Mesh Shaders), 샘플러 피드백 등의 차세대 그래픽 기술을 표준화했다.
기타
.NET 환경(.NET Core, .NET 5+ 등)에서의 게임 개발을 위해서는 현재 FNA나 MonoGame 등을 이용하는 것이 일반적이다. 과거에는 Managed DirectX, XNA 등이 있었으나 현재는 개발이 중단되었다.
- .NET용 래퍼 라이브러리 (오픈소스)
- Vortice.Windows
- TerraFX.Interop.Windows
- SharpDX (개발 중단)
- SlimDX (개발 중단)