DirectX

최근 수정 시각:

파일:attachment/DirectX/directx.jpg

DirectX 다운로드 페이지

1. 개요2. 사용
2.1. 일반 사용자 기준2.2. 개발자 기준
3. 구성 요소
3.1. 현재 지원 중인 컴포넌트
3.1.1. Direct3D3.1.2. Direct2D3.1.3. DirectWrite3.1.4. DXGI3.1.5. DirectCompute3.1.6. XAudio 2
3.2. 개발 중단된 컴포넌트
3.2.1. XInput3.2.2. DirectDraw3.2.3. DirectInput3.2.4. DirectSound3.2.5. DirectSound3D3.2.6. DirectMusic3.2.7. XACT3.2.8. DirectShow3.2.9. DirectX Media Objects3.2.10. DirectPlay3.2.11. D3DX
4. 역사
4.1. WinG (1994년)4.2. DirectX 1
4.2.1. DirectX 1.0 (1995년)
4.3. DirectX 2
4.3.1. DirectX 2.0 (1996년)
4.4. DirectX 3
4.4.1. DirectX 3.0 (1996년)
4.5. DirectX 5
4.5.1. DirectX 5.0 (1997년)4.5.2. DirectX 5.2 (1998년)
4.6. DirectX 6
4.6.1. DirectX 6.0 (1998년)4.6.2. DirectX 6.1 (1999년)
4.7. DirectX 7
4.7.1. DirectX 7.0 (1999년)4.7.2. DirectX 7.1 (2000년)
4.8. DirectX 8
4.8.1. DirectX 8.0 (2000년)4.8.2. DirectX 8.1 (2001년)4.8.3. DirectX 8.2 (2002년)
4.9. DirectX 9
4.9.1. DirectX 9.0 (2002년)4.9.2. DirectX 9.0a (2003년)4.9.3. DirectX 9.0b (2003년)4.9.4. DirectX 9.0c (2004년)
4.10. DirectX 10
4.10.1. DirectX 10.0 (2007년)4.10.2. DirectX 10.1 (2008년)
4.11. DirectX 11
4.11.1. DirectX 11.0 (2009년)4.11.2. DirectX 11.1 (2012년)4.11.3. DirectX 11.2 (2013년)4.11.4. DirectX 11.3 (2015년)4.11.5. DirectX 11.4 (Version 1511) (2015년)4.11.6. DirectX 11.4 (Version 1607) (2016년)4.11.7. DirectX 11.4 (Version 1703) (2017년)4.11.8. DirectX 11.4 (Version 1709) (2017년)
4.12. DirectX 12
4.12.1. DirectX 12 (Version 1507) (2015년)4.12.2. DirectX 12 (Version 1511) (2015년)4.12.3. DirectX 12 (Version 1607) (2016년)4.12.4. DirectX 12 (Version 1703) (2017년)4.12.5. DirectX 12 (Version 1709) (2017년)
5. 기타6. 윈도우 버전별 DirectX 지원 범위7. 관련 문서

1. 개요[편집]


Microsoft DirectX.[1]

1995년 9월 30일에 마이크로소프트Windows 95 이후 플랫폼에 맞게 개발하여 클로즈드 소스 형태로 발표한 게임멀티미디어용 종합 라이브러리.

이게 나온 가장 큰 이유가 다름아닌 게임이다. 게임이 윈도우에서 제대로 돌지 않을 경우 OS의 흥행에 악영향을 미칠 것이라는 것은 명백했는데, 마침 윈도우95 런칭 직전 당시 WinG 라이브러리로 개발된 라이온 킹 게임이 컴팩 프리사리오 PC에서 충돌이 나는 문제를 해결하면서 이름 붙인 것이 바로 DirectX 다.

DOS 시절에는 하드웨어 영역을 직접 액세스 하는 것이 가능하였기에 하드웨어의 성능을 최대로 활용하는 일이 가능했으나, 윈도우에서는 이런 하드웨어 직접 접근이 막히며 윈도우 API를 거치도록 변경되었다. 이런 윈도우의 구조는 모든 하드웨어에 대해 추상화를 제공하여 어떤 제품이든 관계없이 MS가 제공하는 API 만 호출하면 원하는 기능을 사용할 수 있었기에 응용프로그램 개발자는 골치아픈 호환성 문제에서 해방될 수 있었다. 그러나 이러한 래핑은 곧 속도가 더럽게 느렸다. 구조상 한번에 접근 가능한 걸 몇단계를 거쳐야 하니 성능이 안 나오는 게 당연했다. 이런 문제를 해결하면서 게임 개발자들을 끌어들이기 위해 MS는 대대적인 프로모션을 감행했다.

2. 사용[편집]

2.1. 일반 사용자 기준[편집]

자신이 이용하는 응용 프로그램(주로 게임)이 요구하는 DirectX 버전이 Windows 운영체제에서 이미 지원하고 있다면 기본적으로 별 다른 작업이 필요없다. 다만, Windows XP까지는 OS에서 기존 제공하는 초기 버전부터 추가 설치를 통한 마지막 버전까지 비교적 오랫동안 사후 지원되어서 사용자가 OS에서 기본으로 제공하는 버전보다 상위 버전으로 사용하려면 직접 설치해주지 않는 한, DirectX 버전 문제를 겪는 경우가 발생했기 때문에 응용프로그램 패키지에 동봉된 최신 DirectX나 MS가 공식 배포하고 있는 DirectX 런타임을 다운로드받아 설치하는걸로 조치해야 했다. 그나마 Windows 2000과 XP가 서비스팩을 통해 DirectX 버전을 업그레이드하는 방법이 있어 찾는 수고가 Windows 98에 비해 덜 하긴 했다.

Windows Vista부터는 업그레이드된 횟수가 98, Me, 2000, XP에 비해 상대적으로 적어서 그런 일을 해야 할 수고가 더 줄어들고 9.0c 이전 버전은 Vista 이후 버전에도 실행할 수 있게끔 컨버팅[2]해놓으면서 레거시 상태로 유지되지만 구버전 라이브러리와의 호환성이 완벽한건 아니라서 오래된 게임에서 간혹 DirectX 관련 실행 오류가 나타나는 경우가 있다. 주로 .dll 파일 누락이 원인이기에 해당 이름의 dll 파일을 찾아서 구하면 되지만 잘 모르겠다면 MS에서 제공하는 DirectX 최종 사용자 런타임을 통해 설치해주면 대부분 해결된다. 이런 수고를 최소화하고 싶으면 그냥 최신 OS 버전인 Windows 10을 사용하는게 낫다.[3] 최신 OS 버전은 기본 지원하는 DirectX도 다른 구버전 OS보다 가장 최신의 버전을 지원하기 때문에 추후 새로운 DirectX 버전이 나오기 전까지는 9.0c 이전 버전의 호환성 문제 말고는 건드릴게 없다.

2.2. 개발자 기준[편집]

2011년 Windows 7 서비스 팩 1까지는 DirectX 런타임을 웹 브라우저 거칠 필요없이 Windows 업데이트를 통해 구할 수 있어도 Windows와 DirectX 라이브러리 자체는 서로 분리되어 있었기 때문에 DirectX로 응용프로그램을 개발하려면 DirectX SDK를 별도로 설치해야 했으나, 2012년 Windows 8부터는 마지막까지 DirectX SDK에 있던 라이브러리들마저 전부 Windows SDK에 포함되어서 굳이 DirectX SDK를 찾아서 설치할 필요가 없어졌다. 단, DirectX SDK에 사용했던 라이브러리와 소스코드를 그대로 사용할 수 있는건 아니고 일부 라이브러리가 미지원되거나 변경된 부분이 있어서[4] 기존에 DirectX SDK로 개발했던 프로젝트를 Windows SDK 라이브러리 버전으로 변환하려면 해당 절차를 통해 수정해야 하는 번거로움이 있다. 미디어 관련 라이브러리들은 이미 Windows SDK에 있는 Media Foundation으로 흡수 및 이전되었다.

물론, Windows 8 이후 버전의 환경이라도 DirectX SDK 라이브러리로 개발하고 싶을 경우 DirectX SDK를 직접 다운로드받아 설치해서 경로 지정 및 포함 설정하면 Windows 7 이전에서 했던 것처럼 개발할 수 있지만 DirectX SDK 라이브러리와 Windows SDK 라이브러리가 서로 충돌될 여지가 있어서 장기적으로는 DirectX SDK를 고수하는게 더 골치아픈 방식이 될 수 있다. DirectX SDK가 레거시 라이브러리로 격하된지 5년이 넘었고 Windows SDK로 DirectX 응용프로그램을 개발하는 것을 기본적으로 지원하지 않는 Windows 7이 아직까진 주류 OS 버전인데다 2020년 1월까지 연장 지원할 예정이라 MS가 하위호환 명목으로 사용할 수 있게 어쩔 수 없이 지원해주는 듯 하지만, Windows 7의 연장 지원이 종료되는 2020년 1월 이후에도 계속 사용할 수 있게끔 지원해줄지는 알 수 없다.

3. 구성 요소[편집]

DirectX는 하나의 API가 아닌 컴포넌트 형태의 여러 API들로 구성된 "집합체"이므로, 그 중에 사용하고자 하는 컴포넌트의 이름이 무엇인지 확인해야 한다.

3.1. 현재 지원 중인 컴포넌트[편집]

3.1.1. Direct3D[편집]

DirectX 2.0부터 도입된 3D 그래픽 API이자 가장 긴 역사를 지니고 있는 컴포넌트로, 3D 그래픽의 중요성이 커진 이후로 지금까지 DirectX 전체를 통틀어서 가장 높은 비중을 차지한다. 이 때문에 DirectX 9.0 이후로 새로운 메이저 버전을 소개할 때 Direct3D 위주로 개선되다 보니 Direct3D만 부각시키는 경향이 강해졌다. 그동안 DirectX SDK에 소속된 주요 라이브러리였으나 Windows 8부터는 Windows SDK 소속으로 옮겨지면서 일부 사용법과 문법이 변경되었다. 최신 버전은 Direct3D 12로 Direct3D 11 계열 기준으로는 Direct3D 11.4

3.1.2. Direct2D[편집]

DirectX 11부터 도입된 2D 그래픽 API로, 내부적으로 Direct3D를 거쳐서 동작하는 원리[5]로 초창기에 존재했던 DirectDraw와 GDI/GDI+ 를 대체하는 컴포넌트에 해당된다. 비교적 최근에 나온 컴포넌트이기도 하고 DirectX 8.0부터 Direct3D로도 2D 그래픽을 구현할 수 있기 때문에 존재감이 약하지만 2D 그래픽으로만 구성된 게임을 프로그래밍하는데 있어서 개발 난이도가 Direct3D보다 더 쉽다는 장점이 있다. 최근에 들어서는 Direct3D에 있던 일부 기술들을 2D에 적용시켜 버전을 거듭할 때마다 퀄리티가 상승되고 있다. Direct2D를 그래픽 하드웨어로만 돌릴 수 있는 권장사양이 DirectX 10.1이지만 하위 호환 버전인 DirectX 10.0까진 문제없이 돌릴 수 있고 기반이 다른 DirectX 9.0c까지 Direct3D를 이용하여 어떻게든(...) 돌릴 수 있다.[6] Windows 8부터는 Direct3D와 마찬가지로 DirectX SDK 소속에서 Windows SDK 소속 라이브러리로 옮겨졌다. 최신 버전은 Direct2D 1.3

UI에서의 그래픽적 요소로는 GDI(+)가 커널 레벨에서 소프트웨어로 처리되고 세션당 65535개로 핸들이 제한되지만, Direct2D의 경우 GDI의 65535개의 핸들 제한이 없으며 그래픽 가속을 사용하기 때문에 더 가볍고 빠르며 안티 앨리어싱 등 품질 또한 우수하다.

3.1.3. DirectWrite[편집]

DirectX 11부터 도입된 2D 그래픽 API이자 문자 및 글꼴 전용 API로, Direct2D와 함께 사용하기 때문에 쌍두마차 격으로 판올림되고 있다. Windows 8부터는 Direct2D와 마찬가지로 역시 DirectX SDK 소속에서 Windows SDK 소속으로 옮겨졌다. 최신 버전은 DirectWrite 1.3
Direct2D와 함께 기존의 GDI/GDI+를 대체하기 위해 등장하였다. GDI에 비해 하드웨어로 가속되는 폰트 렌더링이나 폰트의 회전 등에 그래픽가속을 사용하게 된다.
또한 기존의 GDI/GDI+ 기반 폰트 렌더링은 시스템 레벨에서 Cleartype이 전역으로 적용되나, DirectWrite의 경우 폰트 힌팅에 기존 클리어타입은 물론 고해상도 디스플레이에서 권장되는 그레이스케일 기반 힌팅을 적용하는 것이 가능하다.

Direct2D와 DirectWrite를 사용하여 프로그램을 작성하는 경우 Windows 10의 레거시 HiDPI업스케일링은 동작하지 않으며 네이티브로 구현하여야 한다.

3.1.4. DXGI[편집]

DirectX 10부터 도입된 커널 모드 드라이버 - 그래픽 하드웨어 간의 통신[7]을 위한 API로, 과거에는 Direct3D 런타임 라이브러리가 전담했으나 추후에 등장할 후속 버전에 포함될 다른 컴포넌트들과의 상호호환성 및 유연성을 위해 별도의 컴포넌트로 분리되었다. 최신 버전은 DXGI 1.6

3.1.5. DirectCompute[편집]

DirectX 11부터 도입된 GPGPU용 API로, GPGPU를 위한 API 자체는 이미 서드파티 API인 NVIDIACUDA와 오픈소스 재단인 크로노스 그룹에서 정식으로 발표된 OpenCL이 먼저 알려졌다가 대세에 따라 MS도 DirectX 차원에서 정식으로 사용할 수 있도록 추가되었다. 셰이더 모델 4.0 이상을 요구하기 때문에 DirectX 10에서도 사용 가능하지만 기능이 일부 제한된다.

3.1.6. XAudio 2[편집]

DirectX 10.1부터 도입된 저수준 언어 기반의 사운드/오디오 API로, XInput과 마찬가지로 XBOX 360의 XAudio에서 비롯되었다. 최신 버전은 XAudio 2.9

3.2. 개발 중단된 컴포넌트[편집]

개발 중단되었기 때문에 더이상의 개선판을 볼 수 없지만 개발만 중단되었을 뿐 사용할 수는 있다. 단, 권장하는 라이브러리가 아니므로 구형 시스템과의 호환성을 위해 부득이 사용해야 할 상황이 아닌 이상, 최신 시스템이라면 가급적 현역 컴포넌트를 사용하는 것이 더 낫다. 일부 라이브러리는 Windows Vista 이후 버전부터 아예 사용할 수 없다.
참고로 미디어 관련 라이브러리들은 Windows 8이 출시되기 이전부터 Windows SDK에 있던 Media Foundation으로 일찌감치 흡수되었다.

3.2.1. XInput[편집]

DirectX 10.1부터 도입된 게임패드 전용 입출력 API로, XBOX 360에 사용된 XInput을 PC 플랫폼에서도 사용할 수 있게 개선되었으나, 태생이 XBOX 360에서 출발한 컴포넌트이다보니 해당 라이브러리를 사용하려면 최소 DirectX 9.0 이상의 하드웨어가 필요하다. Windows 8.1에 포함된 Xinput 1.4 버전을 마지막으로, Windows.Gaming.Input 라이브러리로 대체되었기 때문에 마이크로소프트는 하위 호환성을 제외하면 WGI로 개발할 것을 권장하고 있다. WGI와 XInput의 차이는 오버헤드 감소, 최대 8개의 디바이스 지원, 임펄스 트리거 지원 등의 기능이 추가된 점이다.

3.2.2. DirectDraw[편집]

초창기부터 DirectX 7까지 개발된 2D 그래픽 API로, 2D 그래픽 게임의 프로그래밍에 있어서 필수적인 컴포넌트였으나 2D와 3D가 통폐합된 DirectX 8.0부터 개발이 중단되면서 사용률이 점차 반강제적으로 떨어졌고, 훗날에 등장한 Direct2D가 2D 그래픽 API의 자리를 이어받게 되었다.

3.2.3. DirectInput[편집]

XInput이 등장하기 전 까지 DirectX 1.0 초기부터 존재했던 입출력용 API.
XInput과 WGI가 게임패드만 지원하는것과 달리 키보드마우스 입력 장치 또한 DirectInput을 사용하는 것이 가능하였다.
초창기 게임패드들과 XInput 을 사용하는 XBox 360 컨트롤러가 등장하기 까지 이 둘은 혼용되어서 사용되었으며, 레이싱 휠, 게임패드 어댑더 (듀얼쇼크 -> PC USB변환기 등), 건슈팅 조이스틱등 상당히 많은 제품들이 이 API를 지원한다.

3.2.4. DirectSound[편집]

DirectX 1.0 초기부터 존재했던 사운드 API. 여러 개의 소리를 동시에 처리할 수 있는 믹싱 기능이 기본적으로 제공되며, 샘플링 주파수 변경, 볼륨 조절 등 기본적인 오디오 신호 처리 기능이 제공되었다. 현재는 XAudio2로 대체되었다.

3.2.5. DirectSound3D[편집]

DirectX 3.0부터 존재했던 3D 사운드 API. DirectX 5.0부터는 하드웨어 가속을 지원하도록 지원하고 있다. CreativeEAX도 DirectSound3D를 기반으로 한 확장 API에 가깝다.
Windows Vista부터 오디오 드라이버 구조가 바뀌어 더이상 사운드의 하드웨어 가속을 지원하지 못하도록 되었기 때문에, 사실상 현재는 사용할 수 없는 API.

3.2.6. DirectMusic[편집]

원래는 Interactive Music Architecture라는 이름으로 ActiveX 컨트롤 중 하나로 소개되었다가, DirectX 6.1부터 DirectMusic이라는 이름으로 정식으로 수록된 API. 기본적으로 DirectSound와 비슷한 일을 하지만 MIDI를 기반으로 한 인터랙티브한 BGM 연출 기능이 주력인 것이 특징. 하지만 이미 이 API가 등장했을 때부터 MIDI를 사용하는 게임이 급속하게 줄어들던 시기였고 결국 DirectX 8.0부터 DirectSound쪽으로 통합되었으며 이후 단종되었다. Windows Vista부터는 호환성 문제를 일으키는 경우가 있다.

3.2.7. XACT[편집]

Cross-platform Audio Creation Tool의 이니셜 약자로, 2002년에 처음 소개된 고수준 언어 기반의 사운드/오디오 API. 본래 Xbox Audio Creation Tool의 약자로써 XBOX 게임기를 위한 컴포넌트였다가 콘솔 게임기와 PC와의 크로스 플랫폼이라는 의미로 확장되어 지금의 용어로 자리잡았다. XACT3 버전을 마지막으로 Windows 8부터는 더이상 사후 지원이 이루어지지 않고 있다.

3.2.8. DirectShow[편집]

Windows용 미디어 스트리밍 API로 1996년 3월에 발표된 ActiveMovie가 1997년 DirectX 5.0부터 DirectX의 일부로 편입되면서 DirectShow로 바뀌었다. 응용 프로그램에서 고품질의 비디오 및 오디오의 디코딩, 인코딩, 캡처를 수행 할 수 있고, Windows Media Encoder 9에서도 사용되었으며, 공용 코덱처럼 한번 설치해두면 MF를 쓴 프로그램은 얻어쓸 수 있었으나 개발은 더 이루어지지 않는 듯 하다.
과거에는 DirectX SDK에 포함된 라이브러리였으나 2005년 2월 버전을 마지막으로 그 이후는 Windows SDK 소속으로 옮겨졌으며, Windows Vista부터는 Media Foundation으로 대체되고 있다.

3.2.9. DirectX Media Objects[편집]

COM 기반의 데이터 스트리밍 구성 요소로 동영상 디코더/인코더 및 효과와 같은 스트리밍 객체를 사용하기 위한 API. 동영상 하드웨어 가속 API인 DXVA가 여기에 포함되어 있다. DirectShow 필터처럼 입력 데이터를 가져 와서 출력 데이터를 생성하는 데 사용하지만 DirectShow보다 훨씬 간단하다는 장점이 있다. 현재는 Media Foundation에 있는 Media Foundation Transforms(MFT)에 의해 대체되었는데 DMO 인터페이스의 사용 자체는 가능하지만 MS에서는 사용자 지정 코덱 또는 오디오/비디오 처리 플러그인을 사용할 경우 MFT로 구현할 것을 권장하고 있다.

3.2.10. DirectPlay[편집]

희대의 쓰레기(...) 소켓 API로 명성이 높았다. 웬만한 개발자들은 죄다 직접 네트워크 코드를 따로 만들어 쓸 정도. 현 버전은 많이 나아졌다는 평이나 과거의 악몽 때문에 여전히 사용비율은 높지 않다. 사실상 DirectX 8.0에서 버전업이 끊겼다. 앞서 언급했듯 희대의 쓰레기 소켓 API라고 했음에도 불구하고 8 윈도우 한정으로 일부 고전게임 같은 걸 실행할 때 요놈 때문에 오류보고창이 뜨는 등으로 튕기는 바람에 골머리를 앓게된다 카더라(...)[8]

3.2.11. D3DX[편집]

DirectX 7 부터 제공된 개발 관련 편의를 위한 보조적인 유틸리티 라이브러리. Direct X SDK가 별도로 존재하던 시절인 Windows 7 까지는 정식으로 포함되어 있었지만 Standalone SDK가 Deprecated 처리되고 Windows SDK로 포함된 Windows 8 부터 Deprecated 처리 되었으며 Microsoft는 호환성과 성능문제로 이해 공식적으로 사용을 권장하고 있지 않다.
d3dx9. d3dx9_42.dll와 같이 d3dx로 시작하는 라이브러리와 헤더파일이 이에 포함된다.

4. 역사[편집]

4.1. WinG (1994년)[편집]


1985년 처음 Windows가 나왔을 때, 많은 사람들이 "윈도우에서 할 게임이 없다!"라고 불평을 늘어놓았던 것이 계기가 되어서 개발되었다는 뒷이야기가 있다. 실제로 1992년 이후 Windows 3.1 시절만 해도 정말 할 게임이 없었고(물론 사람 폐인만드는 카드놀이지뢰찾기, 옷 갈아 입히기가 있었긴 했지만), 이 상황은 Windows 95 발매 직후까지 계속 이어졌다. 결국 게이머들은 Windows 95와 인텔 펜티엄 CPU가 보급된 시점에도 640kB의 장벽을 넘어서 게임을 하려 애를 쓰곤 했다. 따라서 DOS4GW와 같은 확장메모리 확보를 위한 소프트웨어가 필요한 dos용 게임(예를들면 90년대 중반에 발매된 상당한 숫자의 북미산 DOS게임)도 굉장히 많았으며, 심지어 1995년 당시 MS-DOS 6.2와 병행해서 쓰는 사람도 수두룩했으니 말 다했다. 이러한 문제점을 매우 심각하게 봤던 MS에서는 1994년에 Windows 3.1용으로 WinG라는 라이브러리를 발표하지만 싸늘한 반응만을 얻고 말았다.[11]

이렇게 된 이유는 Windows 환경에서 그래픽 출력에 쓰는 GDI 라이브러리의 속도가 지나치게 느려서, 빠른 속도를 필요로 하는 게임에는 적합하지 않았기 때문이다.[12] 그래서 Windows 3.1용으로 나온 게임은 대부분 턴제 전략이나 퍼즐 등의 빠른 그래픽 처리가 필요없는 게임이 대부분이었고 빠른 그래픽 처리가 요구되는 다른 장르에서는 대부분 DOS 기반 플랫폼으로 나왔던 것.

4.2. DirectX 1[편집]

4.2.1. DirectX 1.0 (1995년)[편집]

  • 주요 특징 : Windows 95와의 호환성 개선, DirectDraw, DirectSound, DirectInput 포함.[13]

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 95부터, Windows NT 4.0

  • 기본 채택된 그래픽 하드웨어 :

  • 주로 채택된 시기 : 1995~1996년


1995년 9월 30일 MS가 절치부심해서 WinG를 Windows 95에 맞게 만들어낸 것이 바로 DirectX. 초창기에는 그래픽 처리를 2D 그래픽 컴포넌트인 DirectDraw에 중점으로 두었기 때문에 3D 성능은 Glide는 물론 OpenGL에 비하면 당연히 떨어졌지만 게임-OS간에 호환성과 퍼포먼스는 Windows 3.1의 WinG보다 더 나은 편이었다.[14]
MS에서 DirectX에 들이는 관심이 결코 적지 않음에도 불구하고 DirectX 개발팀은 타 마이크로소프트 제품들과 약간 지향이 다르다. 훨씬 더 미묘한 운영체제 해킹을 적극적으로 사용하며 범용성보다는 특화를 추구하는 경향이 있다.

4.3. DirectX 2[편집]

4.3.1. DirectX 2.0 (1996년)[편집]

  • 주요 특징 : Direct3D 포함.

  • 기본 지원 OS : Windows 95 OSR2

  • 사용 가능 OS : Windows 95부터, Windows NT 4.0

  • 기본 채택된 그래픽 하드웨어 :

    • ATI Rage 3D II, Rage Pro (1996~1997년)

    • NVIDIA RIVA 128 (1997년)

    • 3dfx Voodoo Rush (1997년)

  • 주로 채택된 시기 : 1997~1998년


1996년 6월 2일 많은 게이머들이 회자되는 DirectX의 3D 그래픽 컴포넌트인 Direct3D가 포함된 DirectX 2.0이 발표되었고, 발표 이후 안정화 작업을 거쳐서 Windows 95 OSR2에 기본 내장되었다.
하지만 3D의 성능이 처참해서 일반 및 사무 작업 = Windows 95, PC 게임 = DOS 게임이라는 기현상은 계속되었다. 자체지원 때려치우고 OpenGL이나 도입하라는 성토가 대세였을 정도인데다 하필이면 1996년 10월에 DirectX의 훌륭한 대체재로 각광받은 3dfxVoodoo 그래픽카드와 함께 로우 레벨 API인 글라이드가 막 나와서 상당히 좋은 퍼포먼스로 평가받은 바람에 한동안 PC 게임 = Glide API라는 인식으로 전환되었다. 단순히 Windows용 게임의 갯수만 보면 1997년부터 PC 게임 = Windows용 게임으로 취급할 정도로 이전해보다 훨씬 많아지긴 했지만, 정작 게임 개발에 사용된 API는 MS가 개발한 DirectX가 아닌 Glide API였다.

4.4. DirectX 3[편집]

4.4.1. DirectX 3.0 (1996년)[편집]

  • 주요 특징 : DirectSound3D 포함, 다중 키보드 및 마우스 지원.

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 95부터, Windows NT 4.0

  • 기본 채택된 그래픽 하드웨어 : (불명)

  • 주로 채택된 시기 : (불명)


1996년 9월 15일에 발표되어 입체음향 기술에 관련된 DirectSound3D 컴포넌트가 포함되었다. Direct3D의 성능도 강화되었으나 3D 사운드는 기존 서드파티의 기술이 아닌 자체 음향 기술만 취급하여 게임 개발사들이 채택하기 꺼려했다.

4.5. DirectX 5[편집]

4.5.1. DirectX 5.0 (1997년)[편집]

  • 주요 특징 : DirectShow[15] 포함, DirectSound3D의 서드파티 기술 지원, 진동 기능 지원.

  • 기본 지원 OS : Windows 95 OSR2.5

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA RIVA 128 ZX, TNT (1998년)

    • 3dfx Voodoo 2, Banshe (1998년)

    • intel 740 (1998년)

  • 주로 채택된 시기 : 1998~1999년


1997년 8월 4일에 발표되어 동년 11월 26일 출시된 Windows 95 OSR2.5에 기본 내장된 버전. 글라이드 API의 대세로 인해 위협을 느낀 MS에서는 DirectX 개발에 공격적으로 투자하여 먼저 개발 중인 DirectX 4.0을 건너뛰고 새로운 실행 버퍼 모델을 도입함에 따라 3D 성능이 개선되었고 서드파티 개발사의 3D사운드 기술을 지원하는 등 DirectSound3D 부분까지 강화되었지만, 당시로썬 여전히 넘사벽 수준의 퀄리티였던 글라이드 API의 아성을 무너뜨리기엔 역부족이었다. 그래도 종합 멀티미디어 라이브러리로서의 모습이 갖추어진건 그나마 나은 부분.

4.5.2. DirectX 5.2 (1998년)[편집]

  • 주요 특징 : (불명)

  • 기본 지원 OS : Windows 98

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 : (불명)

  • 주로 채택된 시기 : (불명)

4.6. DirectX 6[편집]

4.6.1. DirectX 6.0 (1998년)[편집]

  • 주요 특징 : 멀티 텍스처링 지원, 범프 맵핑 강화

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 :

    • ATI Rage XL, Rage 128 시리즈부터 Fury MAXX까지 (1998~1999년)

    • NVIDIA RIVA TNT2 시리즈 (1999년)

    • 3dfx Voodoo 3, 4, 5 시리즈 (1999~2000년)

    • intel 752, Extreme Graphics, Extreme Graphics 2 (1999~2003년)

  • 주로 채택된 시기 : 1999~2000년


1998년 8월 7일 MS는 이에 포기하지 않고 지속적인 개발 끝에 멀티 텍스처링과 범프 매핑을 비롯한 새로운 기능들이 포함된 DirectX 6.0을 발표했다. 가정용 게임기인 드림캐스트의 API로 사용 가능하지만 DirectX보다 성능 효율이 더 좋은 개발사 자체 API를 주로 사용하는 바람에 반쪽짜리 신세가 되어버렸고, 독점화하고 있는 글라이드를 어느 정도 추격하기에 이르렀지만 새로운 기능들을 CPU가 전담하기엔 부담이 너무 커서 제대로 활용하기 어려웠다는 단점이 있었다.

4.6.2. DirectX 6.1 (1999년)[편집]

  • 주요 특징 : DirectMusic 포함, SSE와 3DNow 명령어 지원.

  • 기본 지원 OS : Windows 98 SE

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 : (불명)

  • 주로 채택된 시기 : (불명)

4.7. DirectX 7[편집]

4.7.1. DirectX 7.0 (1999년)[편집]

  • 주요 특징 : 하드웨어 T&L[16] 지원.

  • 기본 지원 OS : Windows 2000, Windows 2000 Server

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce 256, 2 시리즈, 4 MX 시리즈 (1999~2002년)

    • ATI Radeon 7000 시리즈 (2000~2001년)

  • 주로 채택된 시기 : 2000~2006년 (주류 : 2000~2002년)


1999년 9월 22일 글라이드 API를 향한 계속된 추격 끝에 DirectX 7.0이 발표됨으로써 결실을 맺게 되었다. 6.0버전의 단점을 대폭 개선할 겸 새로운 기술을 추가하면서 1998년에 이미 발표된 OpenGL 1.2.1의 기능을 거의 따라잡았으며, Windows라는 든든한 호환성 보장 레이어를 통해 오히려 OpenGL보다 기능 지원여부에 신경을 쓰지 않아도 되는 경지에 다다랐다. 이후부터는 최소 3D 게임 분야에 한해서만은 Direct3D 7.0이 OpenGL을 앞선 상태였고 PC 게임 API의 천하였던 글라이드와 대등하거나 그 이상으로 발전하면서 2000년 이후에는 PC 게임 = DirectX라는 인식을 심어준 일등 공신이 되었다. MS는 Direct3D의 성능이 보잘 것 없을 때부터 OpenGL과 반대방향 회전 좌표계를 고집하였는데, 이것이 현재는 역으로 DirectX에서의 이탈을 방지하는 장벽으로 작용하고 있다.[17]

4.7.2. DirectX 7.1 (2000년)[편집]

  • 주요 특징 : 빌트-인 RGB 소프트웨어 렌더링 지원.

  • 기본 지원 OS : Windows ME

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 : (불명)

  • 주로 채택된 시기 : (불명)

4.8. DirectX 8[편집]

4.8.1. DirectX 8.0 (2000년)[편집]

  • 주요 특징 : 프로그래머블 셰이딩 기능인 셰이더 모델 1.0 적용, 팔레트 기반의 정수형 GPGPU 지원.

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 95부터

  • 기본 채택된 그래픽 하드웨어 : NVIDIA Geforce 3 시리즈 (2001년)

  • 주로 채택된 시기 : (불명)


2000년 11월 12일에 정식 발표된 버전으로 DirectX 7로 크게 주목받았던 MS는 더 큰 도약을 준비하고 있었다. 그 중에 하나는 그동안 개발자가 건드릴 수 없는 고정 그래픽 파이프라인 구조였던게 개발자가 그래픽 파이프라인에 프로그래밍(관여)할 수 있는 구조로 바뀐 프로그래머블 셰이딩이었고, 그래픽 하드웨어 표준 사항인 레이 트레이싱 기법을 구현할 수 있는 수준까지 도달한 그래픽 API였다.
당시 컨퍼런스에서 발표한 샘플 렌더링 영상으로는 고정 파이프라인 방식에 머물렀던 7.0 버전을 능가하는 혁신이었지만 그래픽 하드웨어 제조사에게 셰이더 프로그래밍하기 위한 표준 가이드라인을 제공하지 않는 바람에 그래픽 하드웨어 제조사의 독자적인 셰이더 언어를 부랴부랴 만들 수밖에 없었고, 그 언어의 사용법이 까다로워서 고정 파이프라인 방식보다 생산성이 떨어지는 가장 큰 단점으로 작용했다.
또한, 초기에는 셰이더 모델 자체가 불안정한 편이었기 때문에 2001년 초에 픽셀 셰이더가 1.2, 1.3 버전으로, 버텍스 셰이더가 1.1 버전으로 개선된 부분이 반영된 8.0a 버전을 통해 어느 정도 안정화되었지만 7.0 버전과는 달리 모험에 뛰어든 게임 개발사들은 전무에 가까웠다. 개발 난이도도 그렇지만 이전 7.0 버전과의 호환성이 떨어진 것도 진입장벽으로 작용한 주요 원인 중 하나였다고 볼 수 있다. 그래서 한동안 8.0버전을 채택한 게임이 거의 나오지 않았던 것.
DirectX 8.0의 문제점은 사용법과 호환성 자체에만 있었던게 아니었는데, MS가 이제 모든 2D는 3차원 폴리곤으로 그리면 된다는 핑계로 기존의 2차원 가속 기능인 DirectDraw를 없애(!)버렸다. 개발자의 비난이 빗발쳤으나[18] DirectDraw는 이후 돌아오지 않았으며, 대신 7.0버전 이하에서 사용 가능하던 2차원 출력 관련 접근(DirectDraw) 기능 일부를 3D쪽으로 지원편입하였다.

4.8.2. DirectX 8.1 (2001년)[편집]

  • 주요 특징 : 픽셀 셰이더 1.4, 버텍스 셰이더 1.1, 3D 성능 개선.

  • 기본 지원 OS : Windows XP, XBOX, Windows Server 2003

  • 사용 가능 OS : Windows 98부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce 4 Ti 시리즈 (2002년)

    • ATI Radeon 8500~9200 시리즈 (2001~2002년)

  • 주로 채택된 시기 : 2002~2006년 (주류 : 2002~2004년)


2001년 10월 25일에 발표된 기존 8.0의 개선판. 여러 차례의 마이너 버전을 거듭하면서 버텍스 셰이더가 1.1버전, 픽셀 셰이더가 1.4버전으로 업그레이드되었고, 특히 최대 동시 명령어 갯수가 증가되었다. 때마침 XBOX 게임기가 개발 막바지에 이르렀던 시기였는데 최신 버전이었던 8.1버전을 XBOX에 반영됨에 따라 많은 개발 관계자와 전문가들이 기대했었고, 2001년 11월에 헤일로: 전쟁의 서막을 비롯한 XBOX 런칭작들의 기술적인 가능성을 보고 이때부터 수많은 개발사들이 그제서야 새로운 버전에 관심을 가지게 되어 이듬해부터 8.1버전 지원 게임이 본격적으로 등장하기 시작했다.

4.8.3. DirectX 8.2 (2002년)[편집]

  • 주요 특징 : DirectPlay 포함.

  • 기본 지원 OS : Windows XP, XBOX, Windows Server 2003

  • 사용 가능 OS : Windows 98부터

  • 기본 채택된 그래픽 하드웨어 : (불명)

  • 주로 채택된 시기 : (불명)

4.9. DirectX 9[편집]

4.9.1. DirectX 9.0 (2002년)[편집]

  • 주요 특징 : 셰이더 모델 2.0 적용, 고수준 셰이더 언어(HLSL) 지원, HDR 렌더링 지원, 부동소수점 텍스처 포맷 지원, 다중 렌더 타겟(MRT) 지원, 다중 요소 텍스처 지원, 스텐실 버퍼 지원, 지오메트리 인스턴싱 적용, 부동소수점 GPGPU의 부분적인 지원.

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 98부터

  • 기본 채택된 그래픽 하드웨어 :

    • ATI Radeon 9500~9800 시리즈 (2002~2003년)

    • NVIDIA GeForce FX 시리즈 (2003~2004년)

    • intel GMA 900 (2004년)

    • S3 Chrome 시리즈

    • XGI Volari 시리즈

  • 주로 채택된 시기 : 2003년~현재 (주류 : 2004~2006년)


2002년 12월 19일에 발표된 버전[19]으로 기존 8.x버전부터 도입된 셰이더 언어의 난이도를 낮추기 위해 고수준 셰이더 언어(HLSL)를 지원하기 시작했고, 셰이더 모델 2.0으로 업그레이드됨에 따라 동시 명령어 갯수가 더욱 확장되었다.
HDR 렌더링이 처음으로 도입되었고, 빈약했던 Direct3D의 2D 기능을 보완하여 예전의 DirectDraw에 버금가는 수준으로 개선되었다. 예상대로 많은 전문가들이 기대에 부풀었고 스타워즈 구 공화국의 기사단, 페르시아의 왕자 시간의 모래, 콜 오브 듀티, 파크라이, 하프라이프 2 등 2003년 이후에 출시된 여러 전설적인 명작 게임들을 통해 DirectX의 위상이 더더욱 높아졌다.

4.9.2. DirectX 9.0a (2003년)[편집]

  • 주요 특징 : 픽셀 셰이더 2.0a, 버텍스 셰이더 2.0a 적용

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 98부터

  • 기본 채택된 그래픽 하드웨어 : (불명)

  • 주로 채택된 시기 : 2003년~현재 (주류 : 2004~2006년)


2003년 3월 26일에 발표된 기존 DirectX 9.0의 개선판. 버텍스 셰이더, 픽셀 셰이더 둘 다 2.0a로 마이너 업그레이드되었으며 동시 명령어 갯수가 최대 512개로 증가되었다. 그 외에 그레이디언트 관련 명령어를 비롯한 일부 새로운 기능이 추가되었다.

4.9.3. DirectX 9.0b (2003년)[편집]

  • 주요 특징 : 픽셀 셰이더 2.0b 적용, 4K 텍스처 지원

  • 기본 지원 OS : (해당 없음)

  • 사용 가능 OS : Windows 98부터

  • 기본 채택된 그래픽 하드웨어 :

    • ATI Radeon X000 시리즈 (2004~2005년)

  • 주로 채택된 시기 : (불명)


2003년 8월 13일에 발표된 DirectX 9.0/9.0a의 개선판. 버텍스 셰이더는 2.0a 그대로 유지되지만 픽셀 셰이더는 2.0b로 마이너 업그레이드되었다. 임시 레지스터의 공간이 확장된 것 이외에는 뚜렷한 변경점은 없고 하드웨어적으로는 ATi의 라데온 X700~800 시리즈만 지원하여 파편화가 발생하는 바람에 게임 업계에서 널리 쓰이지 못 했다.

4.9.4. DirectX 9.0c (2004년)[편집]

  • 주요 특징 : 셰이더 모델 3.0 적용, 지오메트리 인스턴싱, 부동소수점 GPGPU의 완벽 지원, XInput 포함, XBOX 360 한정 XAudio 포함

  • 기본 지원 OS : Windows XP SP2, Windows Server 2003 R2, XBOX 360

  • 사용 가능 OS : Windows 98부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce 6, 7 시리즈 (2004~2006년)

    • ATI Radeon X1000 시리즈 (2005~2007년)

    • intel GMA 950, 3000, X3000, 3100, X3500 (2005~2007년)

  • 주로 채택된 시기 : 2005년~현재


2004년 8월 6일에 발표된 DirectX 9.0/9.0a/9.0b의 대폭 개선판. 이름이 9.0 계열의 연장선이라 큰 변경점은 없어보일지라도 9.0이 맞나 싶을 정도로 새로운 기술들이 대거 추가되었다. 셰이더 모델 3.0으로 업그레이드 되었고 GPGPU 등의 새로운 기능들이 추가되었으며, 후기에는 디스플레이스먼트 맵핑이 추가 지원되었지만 일부 새 기능들은 당시 기술력으로는 프로그래밍하기가 어려워서 잘 활용하지 않는 기능으로 전락되어버렸다. 그래도 기존 구버전과 하위 호환성을 유지하면서 큰 발전을 보여줬기 때문에 2005년 11월에 출시된 콘솔 게임기인 XBOX 360에 적용[20]되었고, 수많은 해외 개발사들은 물론 국내 개발사들까지 오랫동한 채택된 버전이 되었다. 지금도 국내 온라인 PC 게임에서 많이 사용되고 있다(...) 예를 들면, 2016년 7월에 나온 서든어택2... 2017년 9월에 2차CBT 예정된 로스트아크... 하지만, 이러한 현상이 지금 시점에서는 오히려 발목을 잡고 있는데 훗날에 나온 버전들보다 프로그래밍 난이도가 쉬우면서 굳이 새로운 버전이 아니라도 그럭저럭 괜찮은 퀄리티를 뽑을 수 있다는 이유로 9.0c 버전을 지나치게 붙잡기에 이르렀다. 결국 세월이 흐르면서 유저들의 눈높이가 높아짐에 따라 게임 개발사들 간에 경쟁은 계속되면서 더 화려하고 사실적인 퀄리티를 구현하려다 보니 주어진 하드웨어의 성능으로는 오버헤드가 자주 발생하게 되었는데 이는 9.0c의 모든 기능을 최대한 활용하기엔 부족한 성능의 자원이었다. 그래서 9.0c의 모든 기능을 전부 활용한 게임은 사실상 거의 없었고 한동안 반쪽짜리 9.0c 게임으로 이어졌다. 그래도 오리지널 9.0버전 시절 게임보다 더 뛰어난 그래픽으로 보였다. 개발에 사용된 게임 엔진들이 가만히 있지만은 않았으니.. 그래도 몇 년동안 9.0c 관련 마이너 업데이트를 꾸준히 진행되었고 XP의 득세와 함께 노하우는 나날이 쌓여갔지만 태생적인 특성이 바뀌는건 아니었기 때문에 9.0c 최신 업데이트 버전으로 현세대 수준의 퀄리티와 자원(그래픽카드) 최적화를 뽑기가 어려운 낡은 기술인 것은 변함이 없다.

일단 이 기술의 태생이 XP 기술이기에 듀얼코어까지밖에 사용하지 못한다.[21] 그나마도 할당이 그닥 좋지 못하기 때문에 사실상 싱글코어 쓰는 거와 차이가 없다. 거기다가 VRAM을 4GB까지밖에 못 쓴다.

현재 이 기술의 가장 큰 문제는, 그래픽 대비 요구 사양이 매우 높다는 것이다. 국내 게임들은 구린 게임엔진이나 개발력에 다이렉트X 9까지 얹어서 발적화가 나타난 사례가 많다.

4.10. DirectX 10[편집]

4.10.1. DirectX 10.0 (2007년)[편집]

  • 주요 특징 : 셰이더 모델 4.0 적용, 지오메트리 셰이더가 추가 및 포함된 통합 셰이더로 개편, 오버헤드 감소, 8K 텍스처 지원, 지오메트리 인스턴싱 2.0 적용, DXGI 1.0 포함, WDDM 1.0 대응.

  • 기본 지원 OS : Windows Vista

  • 사용 가능 OS : Windows Vista부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce 8, 9 시리즈, GTX 295 ~ GTS 250 (2006~2009년)

    • AMD Radeon HD 2000, 3000 시리즈 (2007~2008년)

    • intel GMA 4500, X4500, X4500HD (2008~2009년), HD Graphics (클락데일 기반) (2010년)

  • 주로 채택된 시기 : 2007년~현재[22]


2006년 11월 30일 9.0c의 마이너 업데이트만 2년 넘게 진행한 끝에 기업용 Windows Vista와 함께 등장한 버전. 3D 그래픽 사용시 그래픽 메모리 가상화를 이용한 오버헤드 감소 효과로 9.0c보다 더 효율적인 그래픽 처리를 보여줬지만, 2달 후인 2007년 1월 30일 일반 가정용 Windows Vista가 출시되고 2007년 2월 2일 DirectX 10의 실체라고 볼 수 있는 DirectX SDK (February 2007)가 공개되면서 뚜껑을 열고 보니 Vista 전용 버전으로 제한되고 있었다.
초기엔 MS의 Vista 판매 전략이 아닌가라는 논의가 있었지만, 윈도우 커널이 5.x에서 6.0버전으로 갈아엎으면서 윈도우 내에 설치된 각종 드라이버들을 통합적으로 제어해주는 기존 XDDM(Windows 2000 Display Driver Model), XPDM(XP Display Model)이 WDDM(Windows Display Driver Model) 1.0으로 탈바꿈했고, 그래픽 메모리 가상화라는 기능이 10.0버전에서 필수로 대두되자 Windows XP는 커널 자체에서 이 기능을 지원을 하지 못 했다.
이 때문에 몇몇 군데에서 10.0버전을 XP로 포팅한다는 루머까지 퍼졌지만, 포팅 성공에 대해서는 전부 무소식이었다. 뭐 그래도 OpenGL을 이용해서 XP에서 10버전 맛보기라도 어느 정도 가능하긴 하지만...[23]
오버헤드 문제 해결을 위해 호환성을 완전히 포기한 것은 둘째치고, 9.0c 대비 압도적인 최적화 수준이었다면 게임 개발사들이 좀더 빨리 도입했을지도 모르지만 Windows Vista 초기 당시의 높은 요구 사양과 발적화 문제가 DirectX 10의 장점을 많이 깎아먹었다. 거기다 9.0c와는 전혀 다른 내용물에 이름만 같은 DirectX를 새로 배워야 했기에 널리 사용되지 못 했다.

4.10.2. DirectX 10.1 (2008년)[편집]

  • 주요 특징 : 셰이더 모델 4.1 적용, 3D 성능 개선, 확장 MSAA 4x 지원, XAudio 2 추가 지원[24]

  • 기본 지원 OS : Windows Vista SP1, Windows Server 2008

  • 사용 가능 OS : Windows Vista SP1부터

  • 기본 채택된 그래픽 하드웨어 :

    • AMD Radeon HD 4000 시리즈 (2008~2009년)

    • NVIDIA GeForce G 210, GT 220, GT 240 (2009년)

    • HD Graphics[25] 2000, 3000 (샌디브릿지 기반) (2011년)

  • 주로 채택된 시기 : 2008년~현재[26]


2008년 2월 4일 Windows Vista 서비스팩1과 함께 DirectX 10.1이 정식 발표되었다. 확장 MSAA 4x의 추가, 3D 그래픽뿐만 아니라 2D 그래픽 사용시에도 그래픽 메모리 가상화를 추가 지원하게 되면서 기존 10.0버전 대비 성능 효율이 개선되었다. 덕분에 사실상 DirectX 10의 완성판이라고 봐도 좋을 정도. 10.0 버전 시절에 비하면 그나마 낫지만 이미 Vista 초기의 안 좋은 첫인상으로 굳어진 뒤라 일부 메이저급 개발 업체들만 사용된 비인기 버전인건 여전했다.
그런 이유로 지금은 훗날에 등장한 DirectX 11의 그늘에 가려져 있는 신세지만 11 버전의 하위호환으로써 존속되고 있고, 이래봬도 2D 그래픽 라이브러리인 Direct2D의 하드웨어 풀옵션 사양이다.

오버워치가 이 버전의 DirectX를 최소 사양으로 요구하고 있다.[27]

4.11. DirectX 11[편집]

4.11.1. DirectX 11.0 (2009년)[편집]

  • 주요 특징 : 셰이더 모델 5.0 적용, 테셀레이션 구현을 위해 헐 셰이더와 도메인 셰이더 추가, GPGPU 컴퓨팅을 위한 컴퓨트 셰이더 추가, Direct2D/DirectWrite 1.0 포함, DXGI 1.1 포함, DirectCompute 포함, XAudio 2.7 포함, 16K 텍스처 지원, 멀티코어 프로세싱 강화, 멀티스레드 지원, WDDM 1.1 대응.

  • 기본 지원 OS : Windows 7, Windows Server 2008 R2

  • 사용 가능 OS : Windows Vista SP2부터

  • 기본 채택된 그래픽 하드웨어 :

    • AMD Radeon HD 5000, 6000 시리즈, 7990~7850, 7770~7730 (2009~2012년)

    • NVIDIA GeForce 400, 500, 600, 700 시리즈, GTX Titan, Titan Black, Titan Z (2010~2014년)

    • HD Graphics[28] 2500, 4000 (아이비브릿지 기반) (2012년)

  • 주로 채택된 시기 : 2009년~현재


2009년 10월 22일 Windows 7과 함께 DirectX 11.0이 정식 공개되었다. (이후 Windows Vista도 플랫폼 업데이트를 통해 추가 지원되었다.) ATI의 신규 HD 5000 시리즈가 이를 지원하며 초창기 지원게임 중 하나인 DIRT 2도 11 환경에서 조금 더 높은 수준의 그래픽을 보여준다. 또한, 2차원 전용 가속 API인 Direct2D와 텍스트 글꼴 표시에 관여하는 DirectWrite를 정식으로 지원하면서 2D 성능이 향상되었으나 DirectX 10.1을 지원하는 그래픽 하드웨어와 Vista 이상만 제대로 사용 가능하다는 미묘한 포지션 때문에 그다지 주목받지 못 했다(...)[29] 덕분에 DirectDraw를 사용한 옛 프로그램들은 Windows 8 이후와의 호환성이 매우 좋지 않은 경우가 많다.[30] 때문에 DXGL이라고[31] 부르는 툴을 이용해서 7.0버전대까지의 구현을 모두 OpenGL로 변환해서 돌리는게 훨씬 나을 정도. (최신버전은 여기서 받을 수 있다. 시스템 요구사항은 여기를 참조[32]. 비슷하게 DirectDraw Compatibility Tool이란 것도 있다. 구글 번역(영어)로 보기)

DirectX보다는 OpenGL을 더 미는 경향이 있었던 지포스와는 달리 DirectX를 더 우선시 하고 표준을 준수하며 함께 길을 걸어온 라데온은 DirectX 11에서 라데온 9700, 9500의 재림이라 할 정도로 제2의 전성기를 맞이했다. 2010년 10월에는 DirectX 11을 지원하는 그래픽카드 시장의 90%를 라데온이 점유하기도 했고, 2011년 4월에도 70% 가까이 차지하고 있었다. NVIDIA가 AMD보다 6개월 늦게 내놓은 것도 영향이 있는 듯하다.

현재 상당히 많은 게임들이 이 버전으로 개발된다. 기술적인 한계에 도달한 DirectX 9.0c에서 더 나은 최적화, 퍼포먼스, 퀄리티를 위해 Windows XP 지원을 과감하게 포기한 원인도 있지만, 대부분은 Windows XP의 연장 지원 종료와 맞물린 것이 원인. 그래도 2012년까진 DirectX 9.0c를 최소 버전으로, Windows XP를 최소 지원 OS로 요구하는 게임이 십중팔구였으나 배틀필드 3가 등장한 2011년부터 Windows Vista를 최소 지원 OS로, DirectX 10을 최소 지원 버전으로 올라갔고, 2013년 크라이시스 3를 기점으로 DirectX 10 아닌 11 전용으로 요구하거나 콜 오브 듀티: 고스트를 기점으로 64비트 OS 전용을 요구하는 것으로 올라가면서 상향 평준화되고 있다. 하지만, 이보다 더 최신 버전으로는 잘 개발되지 않는 이유는 DirectX 11.1을 기본 지원하는 Windows 8과 DirectX 11.2를 기본 지원하는 Windows 8.1이 여러 문제점 때문에 크게 보급되지 않았고, DirectX 12의 경우는 이를 지원하는 Windows 10이 아직 7보다 점유율이 낮은 것도 있지만, DirectX 10과 11만큼의 완벽 호환성이 아닌데다[33][34] 웬만한 실력을 지닌 프로그래머조차 11보다 더 나은 퍼포먼스를 뽑기 어려울 정도로 개발 난이도가 높아 역시 크게 보급되고 있지 않다.

4.11.2. DirectX 11.1 (2012년)[편집]

  • 주요 특징 : Feature Level 11_1 대응, 스테레오스코픽 렌더링을 위한 쿼드 버퍼링 추가, 2D 성능 대폭 개선, Direct2D/DirectWrite 1.1 포함, DXGI 1.2 포함, XAudio 2.8 포함, DirectXMath 3.03 포함, WDDM 1.2 대응.

  • 기본 지원 OS : Windows 8, Windows Server 2012

  • 사용 가능 OS : Windows 7 SP1부터

  • 기본 채택된 그래픽 하드웨어 :

    • AMD Radeon HD 7790 (2013년)

    • HD Graphics[35] 4200~5000, Iris 5100, Iris Pro 5200 (하스웰 기반) (2013년)

  • 주로 채택된 시기 : 2013년~현재 (실질적으로 채택된 게임은 별로 없다.)


2012년 10월 26일 Windows 8과 함께 DirectX 11.1이 정식 발표되었다. Windows 7플랫폼 업데이트를 통해 부분 지원되지만, Windows Vista는 DirectX 11.0을 끝으로 더이상 지원되지 않는다. 또한, DirectX SDK가 2010년 6월 버전을 끝으로 더이상 업데이트되지 않고 있는 중이라 이 버전부터는 개발하는 방식이 DirectX SDK를 통한 개발에서 Windows 8.0 SDK를 통한 개발로 바뀌었다. Windows 7에서 개발하려면 DirectX SDK의 다운로드, 설치, 설정 과정처럼 Windows 8.0 SDK를 구해서 설치하고 설정해야 한다.
특징은 3D Vision[36] 강화, 모바일 강화, XNAMath는 DirectXMath라는 이름으로 변경됨과 동시에 2.05에서 3.03으로 업데이트되었으며, Direct2D는 1.1버전으로 업그레이드되어 2D 처리 성능이 향상되었다.(11.0버전의 Direct2D 1.0버전보다 처리 효율이 5배나 뻥튀기된다!) 또한, Direct3D (11 이상)에만 다룰 수 있었던 멀티스레드 기능이 Direct2D에도 적용되어 이를 이용해서 멀티코어 지원 2D 게임을 개발하는게 가능해졌다.
GCN 아키텍처 기반의 라데온 시리즈만 완벽하게 지원하고 페르미 아키텍처와 케플러 아키텍처 기반의 지포스 시리즈는 표기상으로만 11.1 지원이지 실제로는 Feature Level 11_0까지만 지원하기 때문에 Direct3D 11.1의 모든 기능을 지원하지 못하고 있다. 이로 인한 지원 파편화는 이 글을 참조. 하스웰 아키텍처 기반 내장 그래픽의 경우는 Feature Level 11_1까지 지원하기 때문에 11.1을 지원하기는 하지만 2D 그래픽 성능이 무난할지라도 3D 그래픽 성능이 영 좋지 않은 터라(...)

4.11.3. DirectX 11.2 (2013년)[편집]

  • 주요 특징 : Tiled Resources 옵션 추가, Direct2D/DirectWrite 1.2 포함, DXGI 1.3 포함, DirectXMath 3.06 포함, WDDM 1.3 대응.

  • 기본 지원 OS : Windows 8.1, Windows Server 2012 R2, XBOX ONE

  • 사용 가능 OS : Windows 8.1부터, XBOX ONE

  • 기본 채택된 그래픽 하드웨어 :

    • AMD Radeon R9 290X, 290, 285, 295X2, R7 260X, 260 (2013~2014년)

    • HD Graphics[37] 5300~6000, 400~405, Iris 6100, Iris Pro 6200 (브로드웰 기반) (2014년)

  • 주로 채택된 시기 : 2014년~현재 (실질적으로 채택된 게임은 별로 없다.)


2013년 10월 17일 Windows 8.1과 함께 DirectX 11.2가 공개되었는데, 1달 뒤에 출시된 콘솔 게임기인 엑스박스 원에서도 지원되었다. 'Tiled Resources'라는 새로운 기능을 통해 GPU의 추가적인 로드를 발생시키지 않으면서도 고해상도 텍스처를 보다 역동성 있게 배치할 수 있게 되었다. DirectXMath 3.06으로 업데이트되었고 Direct2D는 1.2버전으로 업그레이드되면서 2D 지오메트리 구현, DDS(DirectDraw Source) 파일 지원, 새로운 이펙트, 렌더링 우선순위 설정, JPEG YCbCr 이미지 지원 등 각종 여러 기능들이 추가되었다. 라데온 Rx 200 시리즈만 이를 제대로 지원한다.

4.11.4. DirectX 11.3 (2015년)[편집]

  • 주요 특징 : 셰이더 모델 5.1 적용, Direct2D/DirectWrite 1.3 포함, DXGI 1.4 포함, XAudio 2.9 포함, DirectXMath 3.07 포함, 공유 메모리 접근 기능 지원, WDDM 2.0 대응.

  • 기본 지원 OS : Windows 10

  • 사용 가능 OS : Windows 10부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce 900 시리즈, GTX Titan X (2014~2015년)

    • AMD Radeon Rx 300 시리즈, R9 Fury X, Fury, Nano (2015년)

    • HD Graphics 510~530, Iris 540~550 (스카이레이크 기반) (2015년)

  • 주로 채택된 시기 : (불명)


셰이더 모델 5.1로 업그레이드되었고 공유 메모리 접근 기능이 추가되었으며, DirectXMath가 3.07로 업데이트되었다. Direct2D는 1.3버전으로 업그레이드되먼서 기능 위주로 추가되었던 1.2버전과는 달리 이번엔 벡터 방식의 잉크 셰이딩이나 메쉬 방식의 그레이디언트 등 새로운 기능은 물론 복잡한 셰이딩 단계가 간략화하여 성능 효율까지 대폭 향상되었다. DirectX 12와 함께 출시된 버전으로, 저수준 API를 다루기 어려운 DirectX 12의 특성을 감안하여 고수준 API에서도 DirectX 12의 추가 기능을 사용하게 하기 위한 버전이라고 한다. 한 줄로 요약하자면 DirectX 12의 고수준 API 버전인 셈.
DirectX 12가 제공하는 저수준 API를 잘 사용하면 기존 DirectX 11보다 더 높은 성능 효율을 뽑을 수 있지만, 잘못 사용하면 오히려 DirectX 11보다 떨어지는 효율을 보여줄 수 있는 위험성을 가지고 있다. 이 때문에 퍼포먼스 향상이라고 마케팅한 MS조차 어지간한 숙련 프로그래머가 아니라면 DirectX 12의 저수준 API보단 DirectX 12의 기능을 어느 정도 사용할 수 있는 DirectX 11.3의 고수준 API를 사용하라고 권장하고 있다.
단, 쉐이더 모델 6.0을 지원하지 않는다. 하드웨어 요구 사양인 Direct3D Feature Level 12_0을 지원하더라도 쉐이더 모델 5.1까지만 사용할 수 있으며, 쉐이더 모델 6.0을 구현하려면 반드시 Direct3D 12 라이브러리를 사용해야 한다.

4.11.5. DirectX 11.4 (Version 1511) (2015년)[편집]

  • 주요 특징 : DXGI 1.5 포함, DirectXMath 3.08 포함, 멀티스레드 보호 기능 강화, 확장된 NV12 텍스처 지원

  • 기본 지원 OS : Windows 10 버전 1511

  • 사용 가능 OS : Windows 10 버전 1511부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce GTX 1080, 1070, 1060 (2016년)

    • AMD Radeon RX 480 (2016년)

    • HD Graphics 500~505, Iris Pro 580 (스카이레이크 기반) (2016년)

  • 주로 채택된 시기 : (불명)

4.11.6. DirectX 11.4 (Version 1607) (2016년)[편집]

  • 주요 특징 : DirectXMath 3.09 포함, UHD 환경을 위한 HDR10 포맷 지원, WDDM 2.1 대응

  • 기본 지원 OS : Windows 10 버전 1607

  • 사용 가능 OS : Windows 10 버전 1607부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce GTX 1050, 1050Ti, 1080Ti, (GP102 GPU 기반) Titan X, Xp (2016~2017년)

    • AMD Radeon RX 470, 460, Pro Duo (2016년)

    • HD Graphics 610~630, Iris Plus 640~650 (카비레이크 기반) (2016~2017년)

  • 주로 채택된 시기 : (불명)

4.11.7. DirectX 11.4 (Version 1703) (2017년)[편집]

  • 주요 특징 : DXGI 1.6 포함, DirectXMath 3.10 포함, WDDM 2.2 대응

  • 기본 지원 OS : Windows 10 버전 1703

  • 사용 가능 OS : Windows 10 버전 1703부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • AMD Radeon RX 500, VEGA 시리즈, Pro Duo (듀얼 Polaris 20 GPU) (2017년)

    • NVIDIA Geforce GT 1030 (2017년)

    • Intel UHD Graphics 630, 620 (2017년)

  • 주로 채택된 시기 : (불명)

4.11.8. DirectX 11.4 (Version 1709) (2017년)[편집]

  • 주요 특징 : DirectXMath 3.11 포함, WDDM 2.3 대응

  • 기본 지원 OS : Windows 10 버전 1709

  • 사용 가능 OS : Windows 10 버전 1709부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce GTX 1070Ti (2017년)

  • 주로 채택된 시기 : (불명)

4.12. DirectX 12[편집]

4.12.1. DirectX 12 (Version 1507) (2015년)[편집]

  • 주요 특징 : DirectX 11.3의 기능 포함, WDDM 2.0 대응, 이기종 다중 GPU 지원, 비동기 컴퓨트 정식 지원, 오버헤드 감소

  • 기본 지원 OS : Windows 10

  • 사용 가능 OS : Windows 10부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce 900 시리즈, GTX Titan X (2014~2015년)

    • AMD Radeon Rx 300 시리즈, R9 Fury X, Fury, Nano (2015년)

    • HD Graphics 510~530, Iris 540~550 (스카이레이크 기반) (2015년)

  • 주로 채택된 시기 : 2015년~현재


2015년 7월 29일 Windows 10과 함께 DirectX 12가 정식으로 발표되었다. CPU 멀티쓰레드 능력 상승과 11버전과 대비 CPU 사용효율이 50% 개선되었으며, 엔비디아의 페르미(GeForce 400 시리즈)[38] 이상, AMD의 GCN(라데온 HD 7900~7700 시리즈) 이상[39], 인텔의 하스웰 CPU 내장 그래픽 이상이 지원되고 있다. 다만, 이 때문에 DirectX 11부터 시작된 기능 수준 지원의 파편화가 더 심해졌다. 자세한 것은 이 글 참조. 이 때문에 feature checker라는 프로그램도 나왔다. 컴덕들 사이에서 GPU 스펙 확인 툴의 바이블 격인 GPU-Z도 0.8.6 버전부터 DirectX 지원 정보가 Feature Level을 보여주는 식으로 바뀌었다.[40]

맨틀처럼 하드웨어 직접 접근을 표방한다. DirectX 12의 성능 향상 폭이 커서 함께 발표된 DirectX 11.3은 사람들 관심 밖으로 밀려났다. 비동기 컴퓨트[41]를 본격적으로 지원하고, 이기종 다중 GPU 환경을 지원한다. 즉, GPU 내부의 하드웨어 자원을 더 효율적으로 활용할 뿐만 아니라 서로 다른 제품의 여러 GPU들을 동시에 활용할 수 있게 되어 CPU에 내장된 GPU + 라데온 GPU + 엔비디아 GPU로 동시에 그래픽처리를 할 수 있게 된 것. 지금까지 크로스파이어, SLI, 그리고 지금은 막혀버린 하이브리드 피직스를 사용하는 방식의 멀티 GPU 환경은 있지만 이는 여러가지 제약[42]을 가지고 있고, 내장 GPU를 활용하지 못한다는 단점이 있다.[43] 아무튼, 내장 GPU의 성능도 조금씩 높아져가는 현재로서는 이를 활용할 수 있으면서 타 사의 그래픽카드와도 연산 호환성을 가진다는 점은 꽤 큰 장점이라고 할 수 있겠다.

하지만 현재 공개된 데모는 그래픽카드에서 렌더링한 화면을 도로 내장으로 복사해서 후처리를 하는 방식이라, 초당 프레임 수는 올라도 하나의 장면을 렌더링 하는데 걸리는 시간(=지연시간=인풋 렉)은 오히려 훨씬 길어진다. DirectX 12 Multiadapter 설명 5번째 댓글에서 계산을 해놨으니 관심있으면 참고하자.

4.12.2. DirectX 12 (Version 1511) (2015년)[편집]

  • 주요 특징 : Direct3D 11.4(Version 1511)의 기능 포함

  • 기본 지원 OS : Windows 10 버전 1511

  • 사용 가능 OS : Windows 10 버전 1511부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce GTX 1080, 1070, 1060 (2016년)

    • AMD Radeon RX 480 (2016년)

    • HD Graphics 500~505, Iris Pro 580 (스카이레이크 기반) (2016년)

  • 주로 채택된 시기 : (불명)

4.12.3. DirectX 12 (Version 1607) (2016년)[편집]

  • 주요 특징 : Direct3D 11.4(Version 1607)의 기능 포함, 셰이더 모델 6.0 추가 적용, DXIL 1.0 추가 지원, 셰이더를 구동하기 위한 새로운 컴파일러 지원, WDDM 2.1 대응

  • 기본 지원 OS : Windows 10 버전 1607

  • 사용 가능 OS : Windows 10 버전 1607부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce GTX 1050, 1050Ti, 1080Ti, (GP102 기반) Titan X, Xp (2016~2017년)

    • AMD Radeon RX 470, 460, Pro Duo (2016년)

    • HD Graphics 610~630, Iris Plus 640~650 (카비레이크 기반) (2016~2017년)

  • 주로 채택된 시기 : (불명)


2016년 8월 2일 Windows 10 버전 1607 대규모 업데이트와 함께 발표되었다. 업데이트된 DirectX 11.4의 기능이 포함되어 있지만 Build 2016에서 소개되었던 셰이더 모델 6.0은 아직 완성되지 않아 Windows 10 Anniversary Update SDK에 반영되지 못 했다. 다행히 2017년 4월 Creators Update 이후 기존 Anniversary Update 빌드 버전에도 셰이더 모델 6.0과 새로운 컴파일러 DXIL이 추가 지원되었다.

4.12.4. DirectX 12 (Version 1703) (2017년)[편집]

  • 주요 특징 : Direct3D 11.4(Version 1703)의 기능 포함, 셰이더 모델 6.0 적용, DXIL 1.0 지원, WDDM 2.2 대응

  • 기본 지원 OS : Windows 10 버전 1703

  • 사용 가능 OS : Windows 10 버전 1703부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • AMD Radeon RX 500, VEGA 시리즈, Pro Duo (듀얼 Polaris 20 GPU) (2017년)

    • NVIDIA GeForce GT 1030 (2017년)

    • Intel UHD Graphics 630, 620 (2017년)

  • 주로 채택된 시기 : (불명)


2016년 3월 Build 2016에서 소개되었던 셰이더 모델 6.0이 완성되었고, 이를 구동하기 위한 새로운 컴파일러가 추가되었다. 셰이더 모델 6.0부터는 LLVM IR 3.7버전을 기반으로 개발된 DXIL(DirectX Intermediate Language)로 컴파일되며, 셰이더 모델 5.1까지 사용된 기존의 HLSL 컴파일러보다 더 나은 성능을 보여줄 수 있다고 한다.

4.12.5. DirectX 12 (Version 1709) (2017년)[편집]

  • 주요 특징 : Direct3D 11.4(Version 1709)의 기능 포함, 셰이더 모델 6.1 적용, DXIL 1.1 지원, WDDM 2.3 대응

  • 기본 지원 OS : Windows 10 버전 1709

  • 사용 가능 OS : Windows 10 버전 1709부터, XBOX ONE 업데이트 이후부터

  • 기본 채택된 그래픽 하드웨어 :

    • NVIDIA GeForce GTX 1070Ti (2017년)

  • 주로 채택된 시기 : (불명)

5. 기타[편집]

참고로 Windows CE에서는 GAPI(Game API)라고 내장 DirectX를 보강한 어플리케이션이 있다.

그래픽 뿐만 아니라 사운드 쪽도 지원하는데, DirectSound가 그것. DirectX에는 좀 늦게 포함이 되었고 그나마 초기 기능은 보잘것 없었기 때문에 초기 윈도우 게임들은 사운드 효과가 많이 떨어졌다. 1990년대 중후반에 나온 게임들이 효과음만 PCM(WAV)을 사용하고 배경음악을 CD 트랙이나 MIDI를 사용하는 것은 이런 이유 때문. 두 개 이상의 PCM을 믹싱해서 출력하는 기능이 떨어졌기 때문이다. 이후 DirectSound가 많이 발전하면서 배경음악도 PCM으로 넣어 믹싱해서 출력하는 것이 가능해졌고, DirectX 3.0부터 DirectSound3D 컴포넌트가 추가되면서 3D 사운드도 지원하게 되었고 5.0버전부터 3D 사운드를 취급하는 여러 서드파티 개발사가 개발한 규격들을 지원하게 되었다. 비슷하게 MIDI 음악 지원을 위해 DirectMusic이 추가되었으나 현재는 빠지고 DirectSound와 사운드 드라이버가 그 자리를 맡고 있다. MS에서는 게임의 플레이 상황에 따른 실시간 곡 변조나 실시간 BGM 생성을 기대했으나 이미 MIDI의 시대는 가버렸다... DirectX 8.0부터는 이들을 합쳐서 DirectX Audio라고 명명되었고, XBOX360 출시 이후 XAudio라는 이름으로 변경되었으며, 2008년 3월에 Windows에도 XAudio가 도입되면서 XAudio 2로 업그레이드되었으며, 현재는 XAudio 2.9가 최신 버전.

그 외에 동영상과 음악 코덱같은 멀티미디어 프로그래밍을 위해 DirectShow가 한때 추가되었으나 금방 Windows SDK 쪽으로 퇴출되었고 Windows Vista 이후 버전부터 Media Foundation으로 대체되는 중이다. 그런데 동영상을 화면에 출력하려면 DirectX에 포함된 구 버전 DirectDraw 라이브러리를 필요로 한다. 왜 나눠놨어(...).

Windows XP가 나오기 이전까지는 웬만한 기능 향상마다 버전이 1 단위로 올라갔는데, 덕분에 거의 매년마다 새 메이저 버전이 나와서 정신을 차릴 수 없을 정도였다.

Windows Vista 이후의 최신 윈도우에서는 DirectX가 10 이후 버전은 제대로 내장되어있지만 DirectX 9는 제대로 내장되어있지 않기 때문에 DirectX 9로 개발된 게임을 실행하려고 하면 d3dx9_××.dll이 없어서 게임을 실행할 수 없다는 메시지가 뜬다.[44] 이는 DirectX 9 End-User Runtime을 설치해주면 해결된다. 다운로드(마이크로소프트 홈페이지) 물론 어디까지나 DirectX 문제만 해결하는 것이기에 다른 호환성 문제로 게임에 문제가 발생하는 것까지는 막을 수 없다.

6. 윈도우 버전별 DirectX 지원 범위[45][편집]

  • Windows 3.x/Windows NT 3.x : WinG

  • Windows 95 : 1.0~8.0a

  • Windows NT 4.x : 1.0~3.0a[46]

  • Windows 98 : 5.2~9.0c

  • Windows 98 SE : 6.1~9.0c

  • Windows 2000 : 7.0~9.0c

  • Windows Me : 7.1~9.0c

  • Windows XP : 8.1~9.0c

  • Windows Server 2003 : 8.1~9.0c

  • Windows XP Professional 64bit Edition : 9.0c

  • Windows Server 2003 R2 : 9.0c

  • Windows Vista : 10.0~11.0 (9.0Ex 포함)

  • Windows Server 2008 : 10.1~11.0 (9.0Ex 포함)

  • Windows 7 : 11.0~11.1 (9.0Ex 포함)

  • Windows Server 2008 R2 : 11~11.1 (9.0Ex 포함)

  • Windows 8 : 11.1 (9.0Ex 포함)

  • Windows Server 2012 : 11.1 (9.0Ex 포함)

  • Windows 8.1 : 11.2 (9.0Ex 포함)

  • Windows Server 2012 R2 : 11.2 (9.0Ex 포함)

  • Windows 10 : 12 (9.0Ex, 11.3~11.4 포함)[47]

  • Windows Server 2016 : 12 (9.0Ex, 11.3~11.4 포함)

7. 관련 문서[편집]

[1] MS에서 말하는 발음법은 '다이렉트 엑스'지만 미국에서는 '디렉트 엑스'라고 읽히는 경우도 있다. 원래 발음은 미국식은 '디렉트 엑스', 영국식은 '다이렉트 엑스'.[2] Windows Vista부터 커널 구조는 물론, 디스플레이 드라이버 모델까지 완전히 달라져서 XP 이전의 9.0c를 그대로 사용할 수 없다.[3] 단, 학생용 배급 버전인 Education은 지원하지 않는다. Home이나 Pro를 구입해야 한다.[4] 주로 d3dx. Deprecated 되었다[5] DirectX 8.0, 9.0처럼 처음부터 Direct3D로 2D 그래픽을 구현하는 것이 더 효율적으로 보일 수도 있지만 2D 그래픽만 구현하기 위해 복잡한 3차원 공간의 좌표를 이용해야 하는 것 자체가 소스코드의 복잡도를 높일 수 있고 잘못하면 자원 낭비를 일으킬 수도 있다.[6] 단, CPU의 점유율이 높아진다 점을 감안해야 한다.[7] 사용자가 가장 많이 접하는 창 모드 - 전체 화면 모드 전환 기능이 이에 해당된다.[8] 이 경우엔 시작 → 제어판 → 모든 제어판 항목 → 프로그램 및 기능 → Windows 기능 켜기/끄기 창을 띄워가지고 레거시 구성 요소 혹은 DirectX 항목에 체크 및 확인 버튼 눌러줌으로써 활성화 시켜줘야 하고 2012 이후의 서버 윈도우일 경우엔 반대로 시작 → 서버관리자 아이콘에 커서 갖다대고 마우스 오른쪽 버튼을 누르고 자세히 항목에 갖다대고 나타나는 관리자 권한으로 실행 버튼을 클릭하여 서버관리자 실행 → 관리(M) → 역할 및 기능 추가 → 시작하기 전 혹은 설치 유형 항목이 뜨면 기능 항목이 뜰 때까지 다음(N) 버튼을 클릭 → DirectX 항목에 체크하고 설치하는 순으로 활성화를 시켜줘야 한다. 이 과정들이 전부 귀찮으면 시작메뉴 쪽에다가 마우스 커서를 갖다대고 마우스 오른쪽 버튼을 누르거나 윈도우 로고가 그려진 키 + X 조합을 누르고 명령 프롬프트(관리자)(A)를 클릭해서 cmd창을 띄운 다음에 dism /online /enable-feature /all /FeatureName:"DirectPlay"를 입력하고 엔터를 치면 DirectPlay 기능이 활성화가 되어서는 오류 보고창이 떠서 튕길일은 없다.[9] Windows 98 SE부터 드랍되었다.[10] 사실상 32비트면 전부 다 지원하며 일부게임은 호환성모드로 256색으로 실행하면 된다.[11] DirectX의 버전이 2.0부터 시작하는 이유가 이것. 1.0 버전의 전신이 WinG이다. Windows 95 발표 이후에 등장한 DirectX는 WinG를 Windows 95에 맞게 포팅되었던 것. 이 라이브러리를 사용한 (흔하지 않은) 게임 중 하나가 삼국지 5. 깔린 시스템이 거의 없어서 대부분 WinG.dll 파일을 따로 넣어주곤 했다. 훗날 Windows 95용으로 컨버전된 삼국지 5는 DirectX 2.0을 사용했다.[12] 이 GDI 라이브러리의 구조가 중간에 한 단계를 더 거쳐 화면에 출력하는 구조이기 때문에 그만큼의 시간을 더 잡아먹는다. DirectX는 이 단계를 생략, 곧바로 화면출력을 하는 구조를 채택했다.[13] 실제로 2D 게임의 개발에 있어서 가장 기본적인 컴포넌트이기도 하다. 굳이 사운드 없는 2D 게임을 개발하고 싶다면 DirectDraw와 DirectInput 컴포넌트만 있으면 되겠지만...[14] 훗날 더 나아가 종합 멀티미디어 라이브러리로 발전한다. 그리고 이 라이브러리는 대성공을 거두어 게임뿐만이 아니라 그래픽 소프트웨어, 동영상, 심지어 일부 주변기기까지 요구하게 되는 필수요소로 자리잡기에 이른다. 사실 최근에는 정규 소프트에서 좀 사양되는 에뮬레이터까지 모두 이걸 요구한다. 윈도 기본 제공 API만으로는 멀티미디어 가속 성능이 좀 딸리기 때문.[15] 1996년 3월에 써드파티 API로 발표되었던 ActiveMovie가 DirectX에 편입되면서 DirectShow라는 이름으로 변경되었다.[16] 각각 변환(Translation)과 조명(Light)의 머릿글자를 뜻한다.[17] 물론 Direct3D 내에서 OpenGL 좌표계를 사용할 수 있도록 해주는 기능이 있다.[18] 익숙한 개발자들이야 자신들이 작성한 2D 라이브러리 내부 코드를 자신이 직접 고치는건 별 어려움이 없을 수도 있지만, 게임개발을 가르치는 입장이 되면 꽤나 골치아픈 문제로 바뀐다. 아무 것도 모르는 교육생들을 상대로 화면에 그림 한 장 띄우려고 3차원 공간에 대하여 논해야 했기 때문. 마치 단순한 방정식이나 함수를 복잡하게 설명해줘야 하는 것과 비슷한 꼴.[19] 그동안 DirectX라고 불렀던건 Direct3D 뿐만 아니라 다른 컴포넌트들까지 큰 변화가 있어서였고, 9.0부터는 변경된 사항이 거의 다 Direct3D에 집중되어 있어서 아예 'Direct3D 9.0'으로 굳어지기 시작했다.[20] 9.0c 기술만 적용되었던 것은 아니었고 통합 셰이딩과 테셀레이션처럼 훗날 10, 11버전에 등장한 일부 기술들이 선행 적용되었다.[21] 사용을 하는 것은 다이렉트X 9를 편법을 써서 어떻게든 손을 본 것이라고 보면 된다. XP는 지원중단되는 그 순간까지도 좀비같이 살아남았기 때문이다. 게다가 몇몇 프로그램을 통해 스레드 할당을 억지로 넣는 것도 가능은 한데, 그 영향으로 보인다. 그러나 유니티 엔진처럼 명목상으로만 멀티코어를 쓰는 것일 가능성이 매우 높은 것이 문제다.[22] 내부적으로 DirectX 11의 하위 호환으로써 존속되고 있는 편이나 DirectX 11 전용 게임들이 하나둘씩 등장하면서 10.0의 하위호환 지원이 개선판인 10.1보다 더 빨리 줄어들고 있다.[23] 현재 OpenGL을 이용하여 DirectX 10 기능을 구현한 게임이 전무하다. 불가능하기보다는 귀찮으니까. 사실 9.0c로도 어느 정도 10버전 기능을 재현할 수 있지만 9.0c의 고질적인 오버헤드 현상 때문에 구현하고 싶은 기능들을 다 뽑기가 어렵다 보니 노력 대비 성과가 좋지 않아 그렇게 하는 곳이 거의 없다는 것을 봐도 알 수 있다.[24] 2008년 3월에 정식으로 발표되었다.[25] 인텔 샌디브릿지 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[26] 현재는 내부적으로 DirectX 11의 하위 호환으로써 존속되고 있고 DirectX 10.0보다 취급이 더 좋지만, 훗날 DirectX 11 전용 게임들이 하나둘씩 등장하면서 10.1의 하위호환 지원도 10.0처럼 점점 축소되고 있다.[27] DirectX 10.0까지 지원하는 그래픽은 아예 실행되지 않는다.[28] 인텔 아이비브릿지 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[29] 인터넷 익스플로러 9가 원래 Windows Vista 이상에서만 사용 가능한 것도 Direct2D를 사용하기 때문이다. 다른 브라우저들은 MS의 계획대로(?) WDDM 1.0을 지원하는 Direct3D 9.0 계열 그래픽 칩셋과 CPU가 함께 동원됨으로써 XP에서도 어떻게든 Direct2D가 돌아간다. 애초에 Direct2D를 이용한 그래픽 처리 자체는 Direct3D를 거쳐서 작동되는 구조이긴 했다.[30] 사실 Direct3D쪽도 과거 7.0버전에서는 하드웨어 T&L이 대세였던 반면, 8.0버전 이후에는 프로그래머블 셰이더로 넘어왔기 때문에 호환성이 메롱했던 점은 크게 다르지 않다. 2D지만 DirectDraw를 더이상 제공하지 않는 점도 그렇고..[31] 글의 중반부분 참조[32] 주로 OpenGL 2.0 이상 필수에 3.2이상 권장이며, Visual C++ 2013 x86으로 컴파일해서 해당 런타임도 설치해놔야 된다.[33] D3D11On12라는 함수 명령어를 통해 하위 호환을 지원하지만 테셀레이션, 도메인 쉐이더, 헐 쉐이더, 멀티스레드 등의 추가 기능들만 빼고 코딩하면 사실상 DirectX 10이 되는 DirectX 11의 완벽한 하위 호환과 다르다.[34] DirectX 11부터 추가된 DirectCompute의 핵심인 컴퓨트 쉐이더는 예외적으로 DirectX 10 환경에서도 제한적으로나마 사용할 수 있다.[35] 인텔 하스웰 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[36] 우리가 흔히 말하는 3D 입체영화 같은 것.[37] 인텔 브로드웰 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[38] 2017년 7월에 페르미 아키텍처 기반 GPU도 추가 지원되었다.[39] 트리니티, 리치랜드, 카베리, 카리조, 브리스톨 리지 영원히 고통받는 라노[40] 이전에는 DX11(SM 5.0)식으로 괄호 안이 셰이더 모델 버전이었으나, 이제는 셰이더 모델이 겨우 5.1버전으로 마이너 업그레이드되어 의미가 없다고 없애고, 12(11_0)나 12(12_1)처럼 괄호안이 Feature Level을 표기하는 것으로 변경되었다.[41] AMD의 1세대 GCN부터 도입된 비동기 셰이더의 병렬 처리 방식과 2세대 GCN 및 NVIDIA의 2세대 맥스웰 기반부터 도입된 다이내믹 로드 밸런싱(선점형) 방식이 있다. 단, 2세대 맥스웰 GPU는 비동기 컴퓨트 기능을 활성화할 경우 비활성화 상태보다 성능이 더 낮아지는 현상때문에 드라이버 차원에서 일부러 막아둔 상태인데다 파스칼 기반 모델이 출시되면서 구형이 된 2세대 맥스웰 기반의 고급형 모델부터 단종 수순을 밟고 있어 이를 개선해서 활성화해줄 가능성은 점점 낮아지고 있다. 따라서, 2016년 현재 NVIDIA로써 비동기 컴퓨트를 그나마 유의미하게 지원하는 GPU는 사실상 파스칼 기반부터라고 볼 수 있다.[42] 크로스파이어SLI의 경우, 각각 AMD와 nVIDIA로만 구성이 가능하다는 점, 그마저도 상성이 맞는 그래픽카드끼리만 가능하고 100+70의 성능이 170이 되지 못한다는 점(70+70 = 140이 돼 버리는 방식), 렌더링 방식이 주로 각 프레임을 각 GPU가 돌아가면서 처리하는 방식이라, 메모리 공유 및 제어과정에서의 오버헤드가 성능향상 영향을 준다는 점과, 하이브리드 피직스의 경우 지금은 적용할 의미를 잃어버린 기술이다. 피직스가 오픈소스화되었기 때문. 자세한 사항은 피직스 참고[43] 외장 그래픽카드 고장시 최소한의 기능을 해준다는 예비 하드웨어라는 기능은 있겠다.(...)[44] 그래서 윈도우 Vista 이후, 최근에 나오는 DX9 게임들은 아예 게임 폴더 내에 d3dx9_××.dll을 족족 넣어 두고 있다(...).[45] 서비스팩까지 포함한 윈도우 버전 기준[46] Win2K 베타에서 제공된 DirectX 5.0 베타를 설치할수 있다고 한다지만 비공식이기 때문에 설치할 수 있는 공식 버전은 3.0a까지다.[47] DirectX 9.0Ex는 Windows 10을 지원하는 모든 그래픽 하드웨어에 해당되지만, DirectX 11.3부터는 케플러, 1세대 GCN, 하스웰 아키텍처 이후의 그래픽 하드웨어만 해당된다.