E D R , A S I H C RSS

DirectX

last modified: 2015-03-29 19:33:54 by Contributors

Microsoft DirectX. MS에서 말하는 발음법은 '다이렉트 엑스'이나 미국에서는 '디렉트 엑스'라고 읽히는 경우도 있다.

directx.jpg
[JPG image (23.27 KB)]




Contents

1. 개요
2. 주요 버전별 특이사항
3. 관련 항목


1. 개요

윈도우용으로 마이크로소프트가 제작한 라이브러리. 처음 윈도우가 나왔을 때, 많은 사람들이 "윈도우에서 할 게임이 없다!"라고 불평을 늘어놓았던 것이 계기가 되어서 개발되었다는 뒷이야기가 있다. 사실 윈도우 3.1 시절만 해도 정말 할 게임이 없었고(물론 사람 폐인만드는 카드놀이지뢰찾기, 옷 갈아 입히기가 있었긴 했지만), 이 상황은 윈도우 95 발매 초기까지 계속 이어졌다. 결국 게이머들은 윈도우 95와 펜티엄이 보급된 시점에도 640kB의 장벽을 넘어서 게임을 하려 애를 쓰곤 했다. 심지어 95와 MS-DOS 6.2를 같이 쓰는 사람도 수두룩했으니 말 다했다.

이렇게 된 이유는 윈도우 환경에서 그래픽 출력에 쓰는 GDI 라이브러리의 속도가 느려서, 빠른 속도를 필요로 하는 게임에는 적합하지 않았기 때문이다.[1] 그래서 윈도우 3.1용으로 나온 게임은 대부분 턴제 전략이나 퍼즐 등의 빠른 그래픽 처리가 필요없는 게임이 대부분이었다.

결국 작업은 윈도우 환경에서, 게임은 도스 환경에서 하는 기현상이 벌어졌던 것이 당시의 상황. 이러한 문제점을 매우 심각하게 봤던 마소에서는 윈도우 3.1용으로 WinG라는 라이브러리를 발표하지만 싸늘한 반응만을 얻고 말았다.[2]

이에 마이크로소프트가 절치부심해서 만들어낸 것이 바로 DirectX. 초기 버전에서는 2D/3D 그래픽 처리를 중점으로 뒀지만(DirectDraw, Direct3D), 이후 사운드(DirectSound)와 입력장치(DirectInput)까지 지원함으로서 종합 멀티미디어 라이브러리로 발전한다. 그리고 이 라이브러리는 대성공을 거두어 게임뿐만이 아니라 그래픽 소프트웨어, 동영상, 심지어 일부 주변기기까지 요구하게 되는 필수요소로 자리잡기에 이른다. 사실 최근에는 정규 소프트에서 좀 사양되는 에뮬레이터까지 모두 이걸 요구한다. 윈도 기본 제공 API만으로는 멀티미디어 가속 성능이 좀 딸리기 때문.

사실 MS에서 DX에 들이는 관심이 결코 적지 않음에도 불구하고 DX 개발팀은 타 마이크로소프트 제품들과 약간 지향이 다르다. 훨씬 더 미묘한 운영체제 해킹을 적극적으로 사용하며 범용성보다는 특화를 추구하는 경향이 있다.

초기 버전에서는 2D 가속 가능이 중점이 되었으며, 3D 기능이 추가된 뒤에도 상당기간 Direct3D의 성능은 처참했다. 자체지원 때려치우고 OpenGL이나 도입하라는 성토가 대세였을 정도로... 그러나 버전 7에 와서는 OpenGL의 기능을 거의 따라잡았으며,(하지만 카멕 형님의 반격이 만만찮았지.) 윈도우라는 든든한 호환성 보장 레이어를 통해 오히려 OpenGL보다 기능 지원여부에 신경을 쓰지 않아도 되는 경지에 다다랐다. 이후부터는 최소 게임 분야에 한해서만은 Direct3D가 OpenGL을 앞선 상태. MS는 D3D의 성능이 보잘것없을 때부터 OpenGL과 반대방향 회전 좌표계를 고집하였는데, 이것이 현재는 역으로 DX에서의 이탈을 방지하는 장벽으로 작용하고 있다.[3]

버전 8에서 이제 모든 2D는 3차원 폴리곤으로 그리면 된다고 생각한 마소는 2차원 가속 기능을 없애버렸다. 비난이 빗발쳤으나[4] DirectDraw는 이후 돌아오지 않으며, 대신 9 버전에서 7버전 이하에서 사용 가능하던 2차원 출력 관련 접근 기능 일부를 3D쪽으로 지원하였다. 또한 버전 10.1에 2차원 전용 가속 API로 Direct2D를 추가하였으나 2D전용 API 주제에 비스타 이상만 사용 가능하다는 미묘한 포지션 때문에 거의 안 쓰이고 있다(...)[5]

사운드 쪽도 지원하는데, DirectSound가 그것. DirectX에는 좀 늦게 포함이 되었고 그나마 초기 기능은 보잘것 없었기 때문에 초기 윈도우 게임들은 사운드 효과가 많이 떨어졌다. 1990년대 중후반에 나온 게임들이 효과음만 PCM(WAV)을 사용하고 배경음악을 CD 트랙이나 MIDI를 사용하는 것은 이런 이유 때문. 두 개 이상의 PCM을 믹싱해서 출력하는 기능이 떨어졌기 때문이다. 이후 DirectSound가 많이 발전하면서 배경음악도 PCM으로 넣어 믹싱해서 출력하는 것이 가능해졌고, 3D 사운드도 지원하게 되었다. 비슷하게 MIDI 음악 지원을 위해 DirectMusic이 추가되었으나 현재는 빠지고 DirectSound와 사운드 드라이버가 그 자리를 맡고 있다. MS에서는 게임의 플레이 상황에 따른 실시간 곡 변조나 실시간 작곡을 기대했으나 이미 MIDI의 시대는 가버렸다...

그 외에 동영상과 음악 코덱 지원을 위해 DirectShow가 한때 추가되었으나 금방 Windows SDK 쪽으로 퇴출되었다. 그런데 동영상을 화면에 출력하려면 DirectX에 포함된 구 버전 DirectDraw 라이브러리를 필요로 한다. 왜 나눠놨어(...).

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

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

2007년에 10.0 버전이 등장하여 9.0보다 더 향상된 그래픽을 보여주지만 10.0은 윈도우 비스타로만 구동 가능하다. 초기엔 MS의 비스타 판매 전략이 아닌가라는 논의가 있었지만, 윈도우 커널을 갈아엎으면서 XPDM(XP Display Model)에서 WDDM 1.0(Windows Display Driver Model)로 넘어가면서, 3D 사용시 비디오 메모리 가상화라는 기능이 DX10에서 필수로 대두되었고, XP는 커널자체에서 이 기능을 지원을 하지 못했기 때문, 몇몇군데서 DX10을 XP로 포팅한다고 했다가 전부 무소식이다. 뭐 그래도 OpenGL을 이용해서 XP에서 DX10 맛보기라도 어느 정도 가능하긴 하지만...[6]

그리고 윈도우 7과 함께 11.0 버전도 공개되었다! ATI의 신규 HD 5000 시리즈가 이 다이렉트X 11을 지원하며 아마도 최초의 11.0 지원게임인 Dirt 2도 11.0 환경에서 더 높은 수준의 그래픽을 보여준다. 다이렉트X보다는 오픈GL을 미는 경향이 있었던 엔비디아와 달리 다이렉트X의 표준을 준수하며 함께 길을 걸어온 라데온은 다이렉트X 11에서 그 결실을 본다. 2010년 10월에는 다이렉트X 11을 지원하는 GPU시장의 90퍼센트를 라데온이 점유하기도 했고, 2011년 4월에도 70퍼센트 가까이 차지하고 있다. 엔비디아가 페르미를 너무 늦게 내놓은 것도 영향이 있는 듯하다.

윈도우 8과 함께 11.1도 공개되었다. 특징은 3D 비젼[7] 강화, 모바일 강화, 2D 처리 향상(11.0 대비해서 처리 효율이 5배나 뻥튀기된다!)으로 여전히 라데온 시리즈(HD 7000 시리즈 이상)만 완벽하게 지원하고 지포스 시리즈는 표기상만 11.1 지원이지 실제로는 모든 기능을 지원하지 못하고 있다. 하스웰의 경우는 11.1을 지원하기는 하지만 그래픽 성능이 영 좋지 않은 터라(...)

2013년 6월에는 11.2 버전이 공개되었는데, 윈도우 8.1과 콘솔 게임기 엑스박스 원에서 지원된다고 한다. 'Tiled Resources'라는 새로운 기능을 통해 GPU의 추가적인 로드를 발생시키지 않으면서도 고해상도 텍스처를 보다 역동성 있게 배치할 수 있다고. 2014년 시점의 최신 그래픽카드인 라데온 R 200 시리즈만 이를 지원한다.

2014년 3월 20일 12버전 내용이 발표되었는데, CPU 멀티쓰레드 능력 상승과 11버전과 대비 CPU 사용효율 50% 개선되었으며, 2014년에 개발자들에게 먼저 공개한 뒤 2015년 12버전을 이용하는 게임을 출시하는 것이 목표라고 한다. 엔비디아의 Fermi, Kepler, Maxwell(Geforce GTX 400 시리즈 이상), AMD 의 GCN기반 라데온 GPU (라데온 HD 7000 시리즈 이상)[8] 및 인텔 하스웰 프로세서 내장 그래픽이 지원될 예정. 맨틀처럼 하드웨어 직접 접근을 표방한다. 다이렉트 12의 성능 향상 폭이 커서 함께 발표된 11.3은 사람들 관심 밖으로 밀려났다. 지못미..

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

2. 주요 버전별 특이사항

3. 관련 항목

----
  • [1] 이 GDI 라이브러리의 구조가 중간에 한 단계를 더 거쳐 화면에 출력하는 구조이기 때문에 그만큼의 시간을 더 잡아먹는다. DirectX는 이 단계를 생략, 곧바로 화면출력을 하는 구조를 채택했다.
  • [2] DirectX의 버전이 2.0부터 시작하는 이유가 이것. 1.0 버전이 WinG이다. 이 라이브러리를 사용한 (흔하지 않은) 게임 중 하나가 삼국지 5. 깔린 시스템이 거의 없어서 대부분 wing.dll 파일을 따로 넣어주곤 했다.
  • [3] 물론 Direct3D 내에서 OpenGL 좌표계를 사용할 수 있도록 해주는 기능이 있다.
  • [4] 익숙한 개발자들이야 자신들의 2D 라이브러리 내부 코드만 고치면 별 어려움이 없지만, 게임개발을 가르치는 입장에서는 꽤나 골치아픈 문제였다. 아무 것도 모르는 교육생들을 상대로 화면에 그림 한 장 띄우려고 3차원 공간에 대하여 논해야 했기 때문.
  • [5] 인터넷 익스플로러 9가 비스타 이상에서만 사용 가능한 것도 Direct2D를 사용하기 때문. 다른 브라우저들은 MS의 계획대로(?) Direct3D로 하드웨어 가속을 지원해서 XP에서도 돌아간다.
  • [6] 현재 OpenGL을 이용하여 DX10 기능을 구현한 게임이 전무하다. 불가능하기보다는 귀찮으니까. 사실 DX9로도 어느 정도 DX10 기능을 재현할 수 있지만 노력 대비 성과가 안 좋으니 그렇게 하는 곳이 거의 없다는 것을 봐도 알 수 있다.
  • [7] 우리가 흔히 말하는 3D 입체영화 같은 것.
  • [8] 트리니티, 리치랜드, 카베리 포함. 영원히 고통받는 라노
  • [9] 4.0은 개발이 취소되어서 아예 없다.
  • [10] 이 때문에 10,11 기반의 게임도 9.0c 기반 버전을 따로 내놓는 경우가 많다. 한 예로, 바이오하자드 4 PC버전을 7에서 돌리려면 9용 3D라이브러리 파일을 따로 구해서 복사해야했다. 지금은 최신 업데이트를 하면 9용 3D라이브러리 파일이 추가된다.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2015-03-29 19:33:54
Processing time 0.0037 sec