Windows – DirectX와 컴퓨터 그래픽

Leave a comment
IT

 

1995년, PC 업계에 커다란 변혁이 일어났다. 바로 마이크로소프트의 새로운 운영체제인 ‘윈도우95(Windows 95)’가 출시되었기 때문이다. 이전에 PC에서 주로 사용되던 도스(Dos) 운영체제는 모든 명령어를 직접 글자로 쳐서 입력해야 했기 때문에 사용이 쉽지 않고 불편했지만, 윈도우 95는 그래픽 형식의 창과 메뉴를 직접 클릭하며 손쉽게 작업할 수 있는 그래픽 사용자 인터페이스(GUI: Graphical User Interface) 기반의 운영체제였기 때문에 초보자들도 쉽게 적응할 수 있었다.

 

 

윈도우 95 이전에도 윈도우 3.1이나 맥(Mac) OS와 같은 GUI 기반의 운영체제가 있긴 했지만, 윈도우 3.1은 기능이나 편의성이 많이 떨어지는 편이었고, 맥 OS는 애플사의 컴퓨터에만 탑재되므로 일반 PC에서는 사용할 수 없다는 문제가 있었다. 하지만 윈도우 95는 기능 및 편의성, 그리고 호환성 면에서 이전의 GUI 기반 운영체제보다 한층 발전, 전세계적으로 큰 인기를 끌며 널리 보급되기 시작했다.

 

윈도우 95와 게임, 그 애증의 관계

 

윈도우 95의 보급으로 인해 PC의 멀티미디어 기능 역시 주목을 받기 시작했다. 사용이 한층 쉬워진 덕에 영화나 음악을 감상하거나 게임을 즐기고자 하는 사용자들이 많아졌기 때문이다. 그런데 초기의 윈도우 95용 멀티미디어 소프트웨어, 특히 게임은 그 수가 절대적으로 부족했으며 그나마 간간이 나오는 윈도우 95용 게임은 비슷한 형식의 도스용 게임에 비해 품질이 오히려 떨어지는 경우가 많았다.

 

그 이유는 도스용 게임과 윈도우용 게임의 개발 환경 차이 때문이었다. 도스는 구조가 단순하여 게임을 구동하기 위해 사용하는 각종 하드웨어(그래픽카드, 사운드카드, 키보드, 마우스 등)를 게임 프로그램 내에서 직접 제어하면서 성능을 이끌어낼 수 있었다. 하지만 윈도우는 도스와 비교되지 않을 정도로 구조가 복잡하고 기능이 많은데다, 게임이 구동되는 중에도 배경에서 운영체제가 상당량의 자원(CPU 속도, 메모리 용량 등)을 점유하고 있어서 게임 프로그램에서 하드웨어를 효과적으로 제어하기가 어려웠다. 그래서 윈도우 95가 출시된 후에도 한동안 많은 게임 개발사들은 여전히 도스 기반의 게임만 출시하곤 했다.

 

하지만 언제까지나 게임이 과거의 유물인 도스 기반에 머물러 있을 수는 없는 일이었다. 게다가 윈도우 95 출시 이후부터 PC용 하드웨어의 종류 역시 폭발적으로 늘어나기 시작했다. 특히, 용도는 같아도 내부적인 구동 방식이 상이한 여러 종류의 하드웨어가 시장에서 공존하는 경우가 많아졌는데, 도스용 게임이라면 프로그램 내에서 각기 다른 하드웨어가 호환되도록 개발자가 직접 수많은 테스트를 거치며 프로그램을 손봐야 한다. 이 과정을 제대로 거치지 않으면, 예를 들어 A그래픽카드를 꽂은 PC에서는 잘 구동되던 게임이 B그래픽카드를 꽂은 PC에서는 오작동을 일으키거나 아예 구동이 되지 않는 등의 상황이 벌어질 수 있었다. 이 때문에 개발자들이 게임 개발에 어려움을 겪기 마련이었고, 개발사마다 게임의 품질도 들쑥날쑥 할 수 밖에 없었다.

 

윈도우용 게임 개발자들을 위한 MS의 선물, 다이렉트X

 

이런 게임 개발자들의 어려움을 덜어주어 윈도우용 멀티미디어 소프트웨어(특히 게임)의 개발을 활성화 시키기 위해 마이크로소프트는 1995년 10월에 ‘다이렉트X(DirectX)’를 발표한다. 여러 종류의 멀티미디어 관련 하드웨어에서 각각 최적의 성능을 이끌어내기 위해서는 각각의 프로그래밍 방법이 필요하다. 이러한 여러 가지 프로그램 규칙을 일련의 함수들로 규정하여 모아놓고, 개발자들이 쉽게 참조, 활용할 수 있는 몇 가지 인터페이스(interface: 프로그램이나 하드웨어 사이에 사용되는 언어나 규칙)로 재구성한 것이 바로 ‘다이렉트(Direct)X’다.

 

참고로, 이와 같이 여러 가지 함수로 집합된 인터페이스를 ‘API(Application Programming Interface)’라고 하는데, 다이렉트X를 구성하고 있는 대표적인 API는 2D 그래픽 구현을 위한 다이렉트드로우(DirectDraw), 3D 그래픽 구현을 위한 다이렉트3D(Direct3D), 음향 재생을 위한 다이렉트사운드(DirectSound), 키보드나 마우스, 게임패드 등을 제어하는 다이렉트인풋(DirectInput) 등이다.

 

 

이러한 다이렉트X의 등장으로 인해 윈도우용 게임 개발자들은 여러 가지 하드웨어의 특성을 일일이 연구하지 않아도 손쉽게 이들을 제어해 원활한 성능을 이끌어낼 수 있게 되었다. 이후 윈도우용 게임들의 품질이 눈에 띄게 향상되었으며, 하드웨어 구성이 각기 다른 PC마다 겪게 되는 소프트웨어 호환성 문제도 상당수 해결되었다. 그리고 다이렉트X는 기본적으로 윈도우 기반 PC를 위해 개발된 것이지만, 마이크로소프트의 엑스박스, 그리고 그 후속작인 엑스박스 360과 같은 비디오 게임기에 적용되기도 했다. 때문에 엑스박스 시리즈용으로 개발된 게임 소프트웨어는 PC용으로 다시 개발하는 과정이 비교적 간단하며, 그 반대의 경우도 마찬가지다.

 

다이렉트X의 버전과 운영체제, 그리고 그래픽카드와의 관계

 

다이렉트X는 1995년에 1.0 버전이 나온 이후 점차 새로운 기능이 추가되며 버전을 높여나갔다. 최신의 소프트웨어일수록 당연히 높은 버전의 다이렉트X 기술이 적용되어 있다. 다만, 플레이 하고자 하는 게임에 최신의 다이렉트X 기술이 적용되어 있더라도 현재 사용 중인 윈도우에 구형 버전의 다이렉트X API가 설치되어있다면 해당 게임이 구동되지 않을 수 있다. 따라서 게임을 자주하는 사용자라면 새로운 버전의 다이렉트X가 나올 때마다 이를 내려 받아 설치해 두는 것이 좋다.

 

윈도우의 버전에 따라 지원하는 다이렉트X의 범위가 다를 수 있다. 윈도우 95는 2001년에 나온 다이렉트X 8.0a 까지만 지원하며, 윈도우 98과 윈도우 XP는 2004년에 나온 다이렉트X 9.0c 까지 지원한다. 그리고 2011년 현재의 최신 버전인 다이렉트X 11은 윈도우 비스타와 윈도우 7, 그리고 윈도우 서버 2008에서만 사용할 수 있다.

 

 

그리고 게임 소프트웨어와 운영체제가 최신의 다이렉트X를 지원하더라도 PC를 구성하고 있는 하드웨어, 특히 그래픽카드가 구형이라면 해당 소프트웨어가 구동되지 않거나 일부 기능이 제한되기도 한다. 다이렉트X 11의 경우, 2009년에 출시된 AMD의 라데온 HD 5000 시리즈가 외장형 그래픽카드 중에 최초로 지원하기 시작했으며, 2011년에 출시된 AMD의 APU(CPU와 GPU의 통합 칩) 시리즈는 최초로 다이렉트X11을 지원하는 내장형 그래픽 기능을 갖췄다.

 

 

상위 버전의 다이렉트X 기술이 적용된 게임은 한층 향상된 품질의 그래픽을 감상할 수 있으나, 그만큼 높은 처리 성능의 하드웨어를 요구한다. 그리고 몇몇 게임들의 경우, 호환성을 위해 낮은 버전과 높은 버전의 다이렉트X 기술을 동시에 적용해 제작되기도 한다. 이런 게임들은 대부분 게임 내의 그래픽 설정 옵션에서 어떤 버전의 다이렉트X 기술을 적용할지 선택할 수 있는 기능을 갖췄다.

 

내 PC의 다이렉트X 버전 확인하기

 

현재 사용 중인 윈도우 기반 PC의 다이렉트X 버전을 확인하기 위해서는 윈도우의 ‘시작’ → ‘실행’을 선택하고 ‘dxdiag’라 입력 후 실행하면 ‘DirectX 진단 도구’ 창이 열린다. 이 창에서는 시스템 하드웨어 등록정보와 다이렉트X 버전 정보, 그래픽카드 정보(제조사, 제품, 비디오 메모리 량, 해상도 등), 사운드 장치 정보 등을 확인할 수 있다.

 

아울러 다이렉트X 최신 버전은 마이크로소프트 홈페이지나 윈도우 업데이트 등을 통해 설치할 수 있다.

 

글 / IT동아 김영우(pengo@itdonga.com)

reference :

http://it.donga.com/openstudy/6251/

———————————————————————————————————————————

DirectX. 한 때 배우고 싶었으나 결국 손대지 못한..

Digiprove sealCopyright secured by Digiprove © 2011

The Author

Hello, I'm Dr.kchris, a neuroscience researcher. I love studying and trying new things and also love challenging myself. Have a great day! :)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.