최근 수정 시각 : 2017-09-20 00:02:02

DirectX

Direct X에서 넘어옴
파일: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. XACT3.1.7. XAudio 23.1.8. DirectX Media Objects
3.2. 개발 중단된 컴포넌트
3.2.1. XInput3.2.2. DirectDraw3.2.3. DirectInput3.2.4. DirectSound3.2.5. DirectSound3D3.2.6. DirectMusic3.2.7. DirectShow3.2.8. DirectPlay3.2.9. DirectX Media
4. 역사
4.1. WinG (1994년)4.2. DirectX 1.0 (1995년)4.3. DirectX 2.0 (1996년)4.4. DirectX 3.0 (1996년)4.5. DirectX 5.0 (1997년)4.6. DirectX 6.0 (1998년)4.7. DirectX 7.0 (1999년)4.8. DirectX 8.0 (2000년)
4.8.1. DirectX 8.1 (2001년)
4.9. DirectX 9.0 (2002년)
4.9.1. DirectX 9.0a (2003년)4.9.2. DirectX 9.0b (2003년)4.9.3. DirectX 9.0c (2004년)
4.10. DirectX 10.0 (2007년)
4.10.1. DirectX 10.1 (2008년)
4.11. DirectX 11.0 (2009년)
4.11.1. DirectX 11.1 (2012년)4.11.2. DirectX 11.2 (2013년)4.11.3. DirectX 11.3 (2015년)4.11.4. DirectX 11.4 (2015년)4.11.5. DirectX 11.4 (Version 1607) (2016년)4.11.6. DirectX 11.4 (Version 1703) (2017년)
4.12. DirectX 12.0 (2015년)
4.12.1. DirectX 12.0 (Version 1511) (2015년)4.12.2. DirectX 12.0 (Version 1607) (2016년)4.12.3. DirectX 12.0 (Version 1703) (2017년)
5. 기타6. 윈도우 버전별 DirectX 지원 범위7. 관련 문서

1. 개요


Microsoft DirectX.[1]

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

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 이후 버전에도 실행할 수 있게끔 컨버팅[3]해놓으면서 레거시 상태로 유지되지만 구버전 라이브러리와의 호환성이 완벽한건 아니라서 오래된 게임에서 간혹 DirectX 관련 실행 오류가 나타나는 경우가 있다. 주로 .dll 파일 누락이 원인이기에 해당 이름의 dll 파일을 찾아서 구하면 되지만 잘 모르겠다면 MS에서 제공하는 DirectX 최종 사용자 런타임을 통해 설치해주면 대부분 해결된다. 이런 수고를 최소화하고 싶으면 그냥 최신 OS 버전인 Windows 10을 사용하는게 낫다. 최신 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에 사용했던 라이브러리를 그대로 사용할 수 있는건 아니고 일부 라이브러리가 미지원되거나 변경된 부분이 있어서 기존에 DirectX SDK로 개발했던 프로젝트를 Windows SDK 라이브러리 버전으로 변환하려면 해당 절차를 통해 수정해야 하는 번거로움이 있다.

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

3. 구성 요소

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

3.1. 현재 지원 중인 컴포넌트

3.1.1. Direct3D

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

3.1.2. Direct2D

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

3.1.3. DirectWrite

DirectX 11부터 도입된 2D 그래픽 API이자 문자 및 글꼴 전용 API로, Direct2D와 함께 사용하기 때문에 쌍두마차 격으로 판올림되고 있다. 최신 버전은 DirectWrite 1.3

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. XACT

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

3.1.7. XAudio 2

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

3.1.8. DirectX Media Objects

동영상 인코더, 디코더 및 효과와 같은 스트리밍 객체를 사용하기 위한 API. 동영상 하드웨어 가속 API인 DXVA가 여기에 포함되어 있다.

3.2. 개발 중단된 컴포넌트

개발 중단되었기 때문에 더이상의 개선판을 볼 수 없지만 개발만 중단되었을 뿐 사용할 수는 있다. 단, 권장하는 라이브러리가 아니므로 구형 시스템과의 호환성을 위해 부득이 사용해야 할 상황이 아닌 이상, 최신 시스템이라면 가급적 현역 컴포넌트를 사용하는 것이 더 낫다.

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.0까지 개발된 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

3.2.5. DirectSound3D

3.2.6. DirectMusic

3.2.7. DirectShow

3.2.8. DirectPlay

3.2.9. DirectX Media

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라는 라이브러리를 발표하지만 싸늘한 반응만을 얻고 말았다.[9]

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

4.2. DirectX 1.0 (1995년)

  • 주요 특징 : Windows 95와의 호환성 개선, DirectDraw, DirectSound, DirectInput 포함.[11]
  • 기본 지원 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보다 더 나은 편이었다.[12]
MS에서 DirectX에 들이는 관심이 결코 적지 않음에도 불구하고 DirectX 개발팀은 타 마이크로소프트 제품들과 약간 지향이 다르다. 훨씬 더 미묘한 운영체제 해킹을 적극적으로 사용하며 범용성보다는 특화를 추구하는 경향이 있다.

4.3. 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.0 (1996년)

  • 주요 특징 : DirectSound3D 포함, 다중 키보드 및 마우스 지원.
  • 기본 지원 OS : (해당 없음)
  • 사용 가능 OS : Windows 95부터, Windows NT 4.0
  • 기본 채택된 그래픽 하드웨어 : (불명)
  • 주로 채택된 시기 : (불명)

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

4.5. DirectX 5.0 (1997년)

  • 주요 특징 : DrawPrimitive, DirectShow[13] 포함, 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을 건너뛰고 기본 그리기 기능인 DirectPrimitve 컴포넌트와 서드파티 개발사의 3D사운드 기술을 지원하는 등 DirectSound3D 부분이 강화되었지만, 당시로썬 여전히 넘사벽 수준의 퀄리티였던 글라이드 API의 아성을 무너뜨리기엔 역부족이었다. 그래도 종합 멀티미디어 라이브러리로서의 모습이 갖추어진건 그나마 나은 부분.

4.6. DirectX 6.0 (1998년)

  • 주요 특징 : 멀티 텍스처링 지원, 범프 맵핑 강화, DirectMusic[14] 포함, SSE[15]와 3DNow 명령어 지원.
  • 기본 지원 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.7. 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.8. DirectX 8.0 (2000년)

  • 주요 특징 : 프로그래머블 셰이딩 기능인 셰이더 모델 1.0 적용, 팔레트 기반의 정수형 GPGPU 지원.
  • 기본 지원 OS : (해당 없음)
  • 사용 가능 OS : Windows 95부터
  • 기본 채택된 그래픽 하드웨어 : NVIDIA Geforce 3 시리즈 (2001년)
  • 주로 채택된 시기 : (불명)

2000년 11월 12일에 정식 발표된 버전. DirectX 7.0으로 크게 주목받았던 MS는 더 큰 도약을 준비하고 있었다. 그 중에 하나는 프로그래머블 셰이딩 기능이었고, 그래픽 하드웨어 표준 사항의 최종 단계인 레이 트레이싱 기법을 구현할 수 있는 수준까지 도달한 그래픽 API였다. 당시 컨퍼런스에서 발표한 샘플 렌더링 영상으로는 고정 파이프라인 방식의 쉐이딩이었던 7.0 버전을 능가하는 혁신이었지만, 까다로운 사용법으로 인해 생산성이 떨어지는게 가장 큰 단점으로 작용했다. 또한, 초기에는 불안정한 편이었기 때문에 7.0 버전과는 달리 새로운 버전을 꺼려하는 개발사가 많아졌다. 개발 난이도도 그렇지만 이전 7.0 버전과의 호환성이 떨어진 것도 진입장벽으로 작용한 주요 원인 중 하나였다고 볼 수 있다. 그래서 한동안 8.0버전을 채택한 게임이 거의 나오지 않았던 것. 8.0버전의 문제점은 사용법과 호환성 자체에만 있었던게 아니었는데, MS가 이제 모든 2D는 3차원 폴리곤으로 그리면 된다는 핑계로 기존의 2차원 가속 기능인 DirectDraw를 없애(!)버렸다. 개발자의 비난이 빗발쳤으나[18] DirectDraw는 이후 돌아오지 않았으며, 대신 7.0버전 이하에서 사용 가능하던 2차원 출력 관련 접근(DirectDraw) 기능 일부를 3D쪽으로 지원편입하였다.

4.8.1. 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버전으로 업그레이드되었고, 특히 최대 동시 명령어 갯수가 28개로 증가되었다. 때마침 XBOX 게임기가 개발 막바지에 이르렀던 시기였는데 최신 버전이었던 8.1버전을 XBOX에 반영됨에 따라 많은 개발 관계자와 전문가들이 기대했었고, 2001년 11월에 헤일로: 전쟁의 서막을 비롯한 XBOX 런칭작들의 기술적인 가능성을 보고 이때부터 수많은 개발사들이 그제서야 새로운 버전에 관심을 가지게 되어 이듬해부터 8.1버전 지원 게임이 본격적으로 등장하기 시작했다.

4.9. 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년)
  • 주로 채택된 시기 : 2003년~현재 (주류 : 2004~2006년)

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

4.9.1. 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.2. DirectX 9.0b (2003년)

  • 주요 특징 : 픽셀 셰이더 2.0b 적용
  • 기본 지원 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.3. DirectX 9.0c (2004년)

  • 주요 특징 : 셰이더 모델 3.0 적용, 지오메트리 인스턴싱, 부동소수점 GPGPU의 완벽 지원, 4K 텍스처 지원, XInput 포함, XBOX 360 한정 XAudio 2 포함
  • 기본 지원 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.0 (2007년)

  • 주요 특징 : 셰이더 모델 4.0 적용, 지오메트리 셰이더가 추가 및 포함된 통합 셰이더로 개편, 오버헤드 감소, 8K 텍스처 지원, 지오메트리 인스턴싱 2.0 적용, DXGI 1.0 포함, WDDM 1.0 대응.
  • 기본 지원 OS : Windows Vista
  • 사용 가능 OS : Windows Vista부터
  • 기본 채택된 그래픽 하드웨어 :
    • NVIDIA GEFORCE 8, 9 시리즈, GTX295~GTS250 (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.1. DirectX 10.1 (2008년)

  • 주요 특징 : 셰이더 모델 4.1 적용, 3D 성능 개선, 확장 MSAA 4x 지원, XAudio 2 정식 지원.
  • 기본 지원 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[24] 2000, 3000 (샌디브릿지 기반) (2011년)
  • 주로 채택된 시기 : 2008년~현재[25]

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를 최소 사양으로 요구하고 있다.[26]

4.11. 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[27] 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 이상만 제대로 사용 가능하다는 미묘한 포지션 때문에 그다지 주목받지 못 했다(...)[28] 덕분에 DirectDraw를 사용한 옛 프로그램들은 Windows 8 이후와의 호환성이 매우 좋지 않은 경우가 많다.[29] 때문에 DXGL이라고[30] 부르는 툴을 이용해서 7.0버전대까지의 구현을 모두 OpenGL로 변환해서 돌리는게 훨씬 나을 정도. (최신버전은 여기서 받을 수 있다. 시스템 요구사항은 여기를 참조[31]. 비슷하게 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만큼의 완벽 호환성이 아닌데다[32][33] 웬만한 실력을 지닌 프로그래머조차 11보다 더 나은 퍼포먼스를 뽑기 어려울 정도로 개발 난이도가 높아 역시 크게 보급되고 있지 않다.

4.11.1. 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[34] 4200~5000, Iris 5100, Iris Pro 5200 (하스웰 기반) (2013년)
  • 주로 채택된 시기 : 2013년~현재 (실질적으로 채택된 게임은 별로 없다.)

2012년 10월 26일 Windows 8과 함께 DirectX 11.1이 정식 발표되었다. (이후 윈도우 7도 플랫폼 업데이트를 통해 부분 지원, 윈도우 비스타는 더이상 지원되지 않는다.) 특징은 3D 비젼[35] 강화, 모바일 강화, XNAMath는 DirectXMath라는 이름으로 변경됨과 동시에 2.05에서 3.03으로 업데이트되었으며, Direct2D는 1.1버전으로 업그레이드되어 2D 처리 성능이 향상되었다.(11.0버전의 Direct2D 1.0버전보다 처리 효율이 5배나 뻥튀기된다!)
라데온 시리즈(HD 7000 시리즈 이상)만 완벽하게 지원하고 지포스 시리즈는 표기상만 11.1 지원이지 실제로는 모든 기능을 지원하지 못하고 있다. 이로 인한 지원 파편화는 이 글을 참조. 하스웰의 경우는 11.1을 지원하기는 하지만 그래픽 성능이 영 좋지 않은 터라(...)

4.11.2. 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[36] 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) 파일 지원, 새로운 이펙트, 2D 모드에서도 멀티스레딩 지원, 렌더링 우선순위 설정, JPEG YCbCr 이미지 지원 등 각종 여러 기능들이 추가되었다. 라데온 Rx 200 시리즈만 이를 제대로 지원한다.

4.11.3. 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를 다루기 어려운 특성을 감안하여 고수준 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.4. DirectX 11.4 (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.5. 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.6. 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년)
  • 주로 채택된 시기 : (불명)

4.12. DirectX 12.0 (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 시리즈)[37] 이상, AMD의 GCN(라데온 HD 7900~7700 시리즈) 이상[38], 인텔의 하스웰 CPU 내장 그래픽 이상이 지원되고 있다. 다만, 이 때문에 DirectX 11부터 시작된 기능 수준 지원의 파편화가 더 심해졌다. 자세한 것은 이 글 참조. 이 때문에 feature checker라는 프로그램도 나왔다. 컴덕들 사이에서 GPU 스펙 확인 툴의 바이블 겪인 GPU-Z도 0.8.6버전부터 DirectX 지원 정보가 Feature Level을 보여주는 식으로 바뀌었다.[39]

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

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

4.12.1. DirectX 12.0 (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.2. DirectX 12.0 (Version 1607) (2016년)

  • 주요 특징 : Direct3D 11.4(Version 1607)의 기능 포함, 셰이더 모델 6.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.3. DirectX 12.0 (Version 1703) (2017년)

  • 주요 특징 : Direct3D 11.4(Version 1703)의 기능 포함, 셰이더 모델 6.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년)
  • 주로 채택된 시기 : (불명)

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

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에서는 게임의 플레이 상황에 따른 실시간 곡 변조나 실시간 작곡[43]을 기대했으나 이미 MIDI의 시대는 가버렸다... DirectX 8.0부터는 이들을 합쳐서 DirectX Audio라고 명명되었으며, XBOX360 출시 이후 XAudio라는 이름으로 변경되었다. 2017년 현재는 XAudio 2.9가 최신 버전.

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

DirectPlay는 희대의 쓰레기(...) 소켓 API로 명성이 높았다. 웬만한 개발자들은 죄다 직접 네트워크 코드를 따로 만들어 쓸 정도. 현 버전은 많이 나아졌다는 평이나 과거의 악몽 때문에 여전히 사용비율은 높지 않다. 사실 8.0에서 버전업이 끊겼다.

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 : 1.0[46]
  • Windows 95 : 1.0~8.0a
  • Windows NT 4.x : 1.0~3.0a[47]
  • 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 포함)[48]
  • Windows Server 2008 : 10.1~11.0 (9.0Ex 포함)
  • Windows 7 : 11.0~11.1 (9.0Ex 포함)[49]
  • Windows Server 2008 R2 : 11.0~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.0 (9.0Ex, 11.3~11.4 포함)[50]
  • Windows Server 2016 : 12.0 (9.0Ex, 11.3~11.4 포함)

7. 관련 문서



[1] MS에서 말하는 발음법은 '다이렉트 엑스'지만 미국에서는 '디렉트 엑스'라고 읽히는 경우도 있다. 원래 발음은 미국식은 '디렉트 엑스', 영국식은 '다이렉트 엑스'.[2] 취소선이 쳐져 있지만 이게 나온 가장 큰 이유가 다름아닌 게임이다. 실제로 다이렉트X가 게임 외에 사용된다는 것 자체를 모르는 경우가 대부분이다.[3] Windows Vista부터 커널 구조는 물론, 디스플레이 드라이버 모델까지 완전히 달라져서 XP 이전의 9.0c를 그대로 사용할 수 없다.[4] 정황상 Windows 7의 연장 지원이 종료되는 2020년 즈음에 최신 버전의 비주얼 스튜디오 혹은 기존 비주얼 스튜디오의 최신 업데이트 버전에서 DirectX SDK 사용이 불가능해질 가능성이 있다.[5] DirectX 8.0, 9.0처럼 처음부터 Direct3D로 2D 그래픽을 구현하는 것이 더 효율적으로 보일 수도 있지만 2D 그래픽만 구현하기 위해 복잡한 3차원 공간의 좌표를 이용해야 하는 것 자체가 소스코드의 복잡도를 높일 수 있고 잘못하면 자원 낭비를 일으킬 수도 있다.[6] 단, CPU의 점유율이 높아진다 점을 감안해야 한다.[7] 사용자가 가장 많이 접하는 창 모드 - 전체 화면 모드 전환 기능이 이에 해당된다.[8] 사실상 32비트면 전부 다 지원하며 일부게임은 호환성모드로 256색으로 실행하면 된다.[9] DirectX의 버전이 2.0부터 시작하는 이유가 이것. 1.0 버전의 전신이 WinG이다. Windows 95 발표 이후에 등장한 DirectX는 WinG를 Windows 95에 맞게 포팅되었던 것. 이 라이브러리를 사용한 (흔하지 않은) 게임 중 하나가 삼국지 5. 깔린 시스템이 거의 없어서 대부분 WinG.dll 파일을 따로 넣어주곤 했다. 훗날 Windows 95용으로 컨버전된 삼국지 5는 DirectX 2.0을 사용했다.[10] 이 GDI 라이브러리의 구조가 중간에 한 단계를 더 거쳐 화면에 출력하는 구조이기 때문에 그만큼의 시간을 더 잡아먹는다. DirectX는 이 단계를 생략, 곧바로 화면출력을 하는 구조를 채택했다.[11] 실제로 2D 게임의 개발에 있어서 가장 기본적인 컴포넌트이기도 하다. 굳이 사운드 없는 2D 게임을 개발하고 싶다면 DirectDraw와 DirectInput 컴포넌트만 있으면 되겠지만...[12] 훗날 더 나아가 종합 멀티미디어 라이브러리로 발전한다. 그리고 이 라이브러리는 대성공을 거두어 게임뿐만이 아니라 그래픽 소프트웨어, 동영상, 심지어 일부 주변기기까지 요구하게 되는 필수요소로 자리잡기에 이른다. 사실 최근에는 정규 소프트에서 좀 사양되는 에뮬레이터까지 모두 이걸 요구한다. 윈도 기본 제공 API만으로는 멀티미디어 가속 성능이 좀 딸리기 때문.[13] 본래 별도로 존재했던 ActiveMovie의 API가 DirectShow라는 이름으로 DirectX에 편입되었다.[14] DirectX 6.1부터 추가되었다.[15] DirectX 6.1부터 지원되었다.[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] 인텔 샌디브릿지 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[25] 현재는 내부적으로 DirectX 11의 하위 호환으로써 존속되고 있고 DirectX 10.0보다 취급이 더 좋지만, 훗날 DirectX 11 전용 게임들이 하나둘씩 등장하면서 10.1의 하위호환 지원도 10.0처럼 점점 축소되고 있다.[26] DirectX 10.0까지 지원하는 그래픽은 아예 실행되지 않는다.[27] 인텔 아이비브릿지 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[28] 인터넷 익스플로러 9가 원래 Windows Vista 이상에서만 사용 가능한 것도 Direct2D를 사용하기 때문이다. 다른 브라우저들은 MS의 계획대로(?) WDDM 1.0을 지원하는 Direct3D 9.0 계열 그래픽 칩셋과 CPU가 함께 동원됨으로써 XP에서도 어떻게든 Direct2D가 돌아간다. 애초에 Direct2D를 이용한 그래픽 처리 자체는 Direct3D를 거쳐서 작동되는 구조이긴 했다.[29] 사실 Direct3D쪽도 과거 7.0버전에서는 하드웨어 T&L이 대세였던 반면, 8.0버전 이후에는 프로그래머블 셰이더로 넘어왔기 때문에 호환성이 메롱했던 점은 크게 다르지 않다. 2D지만 DirectDraw를 더이상 제공하지 않는 점도 그렇고..[30] 글의 중반부분 참조[31] 주로 OpenGL 2.0 이상 필수에 3.2이상 권장이며, Visual C++ 2013 x86으로 컴파일해서 해당 런타임도 설치해놔야 된다.[32] D3D11On12라는 함수 명령어를 통해 하위 호환을 지원하지만 테셀레이션, 도메인 쉐이더, 헐 쉐이더, 멀티스레드 등의 추가 기능들만 빼고 코딩하면 사실상 DirectX 10이 되는 DirectX 11의 완벽한 하위 호환과 다르다.[33] DirectX 11부터 추가된 DirectCompute의 핵심인 컴퓨트 쉐이더는 예외적으로 DirectX 10 환경에서도 제한적으로나마 사용할 수 있다.[34] 인텔 하스웰 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[35] 우리가 흔히 말하는 3D 입체영화 같은 것.[36] 인텔 브로드웰 기반 펜티엄, 셀러론 CPU의 내장그래픽 포함[37] 2017년 7월에 페르미 아키텍처 기반 GPU도 추가 지원되었다.[38] 트리니티, 리치랜드, 카베리, 카리조, 브리스톨 리지 영원히 고통받는 라노[39] 이전에는 DX11(SM 5.0)식으로 괄호 안이 셰이더 모델 버전이었으나, 이제는 셰이더 모델이 겨우 5.1버전으로 마이너 업그레이드되어 의미가 없다고 없애고, 12(11_0)나 12(12_1)처럼 괄호안이 Feature Level을 표기하는 것으로 변경되었다.[40] AMD의 1세대 GCN부터 도입된 비동기 셰이더의 병렬 처리 방식과 2세대 GCN 및 NVIDIA의 2세대 맥스웰 기반부터 도입된 다이내믹 로드 밸런싱(선점형) 방식이 있다. 단, 2세대 맥스웰 GPU는 비동기 컴퓨트 기능을 활성화할 경우 비활성화 상태보다 성능이 더 낮아지는 현상때문에 드라이버 차원에서 일부러 막아둔 상태인데다 파스칼 기반 모델이 출시되면서 구형이 된 2세대 맥스웰 기반의 고급형 모델부터 단종 수순을 밟고 있어 이를 개선해서 활성화해줄 가능성은 점점 낮아지고 있다. 따라서, 2016년 현재 NVIDIA로써 비동기 컴퓨트를 그나마 유의미하게 지원하는 GPU는 사실상 파스칼 기반부터라고 볼 수 있다.[41] 크로스파이어SLI의 경우, 각각 AMD와 nVIDIA로만 구성이 가능하다는 점, 그마저도 상성이 맞는 그래픽카드끼리만 가능하고 100+70의 성능이 170이 되지 못한다는 점(70+70 = 140이 돼 버리는 방식), 렌더링 방식이 주로 각 프레임을 각 GPU가 돌아가면서 처리하는 방식이라, 메모리 공유 및 제어과정에서의 오버헤드가 성능향상 영향을 준다는 점과, 하이브리드 피직스의 경우 지금은 적용할 의미를 잃어버린 기술이다. 피직스가 오픈소스화되었기 때문. 자세한 사항은 피직스 참고[42] 외장 그래픽카드 고장시 최소한의 기능을 해준다는 예비 하드웨어라는 기능은 있겠다.(...)[43] 이 실시간 작곡을 쓰는 게임이 다름아닌 마비노기다. 작곡 시스템에 MIDI를 사용하지만 DirectMusic을 쓰는지는 불명.[44] 그래서 윈도우 Vista 이후, 최근에 나오는 DX9 게임들은 아예 게임 폴더 내에 d3dx9_××.dll을 족족 넣어 두고 있다(...).[45] 서비스팩까지 포함한 윈도우 버전 기준[46] WinG.DLL로 제공[47] Win2K 베타에서 제공된 DirectX 5.0 베타를 설치할수 있다고 한다지만 비공식이기 때문에 설치할 수 있는 공식 버전은 3.0a까지다.[48] 기능적으로 보면 기존 9.0c의 연장선에 위치하지만 10.0버전의 하위호환 버전이 아니다.[49] 10.x버전은 11.x버전의 하위호환으로 지원되기 때문에 별도로 표시하지 않는다. 애초에 11.x버전 자체가 기술적으로는 기존 10.x버전에서 새로운 기능(명령어)들을 추가한 일종의 확장팩에 가깝다.[50] DirectX 9.0Ex는 Windows 10을 지원하는 모든 그래픽 하드웨어에 해당되지만, DirectX 11.3부터는 케플러, 1세대 GCN, 하스웰 아키텍처 이후의 그래픽 하드웨어만 해당된다.