DirectX란?

GamePrograming/DirectX : 2009. 4. 21. 05:24
반응형

프로그램 개발자나 관련직종이 아닌 일반 사용자들이 다이렉트X에 대한 기술적인 부분은 이해하기가 어렵다. 여기서는 대략적인 개념정도를 파악하는 정도에 그치지만 이러한 지식들을 쌓음으로써 윈도즈 XP 운영체제에 대한 심도 있는 이해가 가능할 것이라는 생각이고, 오류 발생시나 컴퓨터 유지보수시에 도움이 될 것이다. 보다 자세한 사항은 관련정보를 전문적으로 다루는 사이트를 통해서 정보를 얻는 것이 좋다.

 우리가 사용하는 윈도우 응용 어플리케이션은 이미 준비된 API(Application Programming Interface) 그리고 그래픽관련 어플리케이션에 많이 쓰이는 GDI(Graphic Device Interface)라는 것을 이용하게 된다. 프로그래머들은 이들 API와 GDI를 이용해서 라이브러리화된 도구들을 이용해서 프로그래밍을 하는 것이 일반적이다. (GDI도 API에 포함된다.) WIN16 또는 WIN32는 라이브러리화된 API함수가 16비트용이냐 32비트용이냐라는 것을 칭하며, 앞으로는 WIN64를 이용하게 될 것이다. 32비트 컴퓨터에서 32비트 명령어를 사용해만 제대로 된 성능을 낼 수 있는 것 처럼 64비트 컴퓨터에서도 64비트용 명령어를 사용해야만 하드웨어가 가진 성능을 통해 응용 어플리케이션의 빠른 처리가 가능하다.  DOS(Disk Operating System)운영체제에서는 API, GDI가 필요없이 프로그래머가 직접 하드웨어와 관련된 프로그램을 작성할 수 있고 직접제어가 가능하던 것과는 달리, 윈도우에서는 DOS방식과 같은 하드웨어의 직접적인 접근은 허용되지 않고. 마이크로소프트사가 준비해 놓은 API, GDI라는 소스가 공개되지 않은 모듈(Module) 또는 객체(Object)를 이용하는 방식으로 프로그래밍을 해야한다. 이것은 공개되지 않은 마이크소프트사만이 알고 있는 소스(Source)이기에 오픈소스진영에서는 이를 두고 본네트가 용접된 자동차라고도 표현한다. 즉 본네트의 뚜껑 열고 엔진을 확인할 수 없기 때문이다. 좋은 성능을 얻기위한 개조, 개선, 변형, 수정과 같은 작업을 할 수 없기 때문이다. 레고블럭처럼 특정한 색깔과 일정한 형태의 블럭으로 제공된 것 만을 가지고 창작을 해야지, 블럭의 색깔이나 형태를 변형할 수는 없는 셈이다.  마이크로소프트 운영체제에서 작동되는 그레픽관련 프로그램을 개발하기 위해서는 GDI라는 마이크로소프트사의 레고블럭을 이용하는 것은 하드웨어를 직접 액세스하는 방식보다 느리다는 단점이 있다. 그래서 하드웨어의 특성에 맞게 보다 효율적 성능을 발휘하도록 단점을 보안하고 보다 빠른 처리를 위해 탄생한 것이 기술 마이크소프트사의 다이렉트X이다. 그럼 다이렉트X 아키텍처(Arcitecture)에 대해서 마이크로소프트사의 문서 내용을 참조해 보기로 한다.

다이렉트X 아키텍처(Arcitecture)

 일반적인 응용 어플리케이션에 쓰이는 API가 아닌 특별히 멀티미디어를 위해 고안된 API함수들을 가지고 있는 것이 다이렉트X이다. 일반 API가 아닌 특별한 기술에 의해 고안되어 작동되어지는 API로써 하드웨어에 직접접속(Direct Access)하여 고속으로 처리하는 효과를 가져온다는데서 명명되어졌다.

 DirectX란?

 Microsoft DirectX는 마이크로소프트 Windows 운영체제에 구축되어 있는 멀티미디어 APIs (Application Programming Interfaces)의 향상된 슈트를 말합니다. DirectX는 Windows 기반 PC를 위한 표준 개발 플랫폼을 제공하는데, 개발자들로 하여금 특정 하드웨어에만 한정된 코드를 쓰지 않고서도 전문 하드웨어 기능에 액세스 할 수 있도록 해 줍니다. DirectX는 1995년에 처음 도입되어 현재는 윈도우 플랫폼에서 멀티미디어 어플리케이션을 개발하는 하나의 표준으로 인식되고 있습니다.

마이크로소프트의 DirectX개발 목표는 개발자들에게 개발 지침이나 구성요소를 제공함으로써, 하드웨어 기종에 상관없이 자신들이 개발한 어플리케이션이 모든 윈도우 기반 PC에서 운용될 수 있다는 확신을 심어주는 것이었습니다. 따라서 개발자들은 자신들의 제품이 고성능 하드웨어 기능을 최대한 활용할 수 있어 최상의 성능을 구현할 수 있다는 믿음을 갖게 됩니다.

DirectX는 개발자들로 하여금 사용자들이 어떤 디스플레이 어댑터나 사운드 카드 등을 사용할 것인가 하는 부수적인 부분에 신경을 쓰지 않고 어플리케이션 개발/구축에 전념하게 함으로써 개발자들의 생산성을 증대시키고 업무혁신을 도모할 수 있게 합니다.

DirectX는 개발자들에게 고성능 하드웨어( 3-D 가속 칩, 사운드 카드 등)의 향상된 기능을 보다 쉽게 접근/사용할 수 있는 단일 APIs 세트를 제공합니다. 이들 APIs는 2-D 그래픽 가속 기능 등 "하위 수준의 기능"들을 제어하며, 또한 조이스틱, 키보드, 마이크 등 입력 장비를 지원하고 또한 사운드 믹스 및 사운드 출력을 제어합니다. 하위 수준의 기능들은 DirectX의 구성요소, 즉, Microsoft DirectDraw®, Microsoft Direct3D®, Microsoft DirectInput®, Microsoft DirectSound®, Microsoft DirectPlay®, DirectShow® 및 Microsoft DirectMusic®등에 의해서 지원됩니다.

DirectX 이전에는 윈도우용 멀티미디어 장비를 개발하는 개발자들은 자신들이 개발한 제품을 커스터마이징하여 매우 다양한 하드웨어 및 구성에서 잘 구동될 수 있도록 별도 작업을 해야만 했습니다. DirectX는 "Hardware Abstraction Layer (HAL, 하드웨어 추상 계층 )"를 제공하는데, 이것은 소프트웨어를 사용하여 게임 소프트웨어와 컴퓨터 하드웨어 간의 커뮤니케이션을 수행하는 것입니다. 그 결과 개발자들은 DirectX를 사용하여 기존의 많은 하드웨어 장비나 구성방식에 상관없이 자기 제품의 단일 버전을 개발할 수 있습니다.

DirectX는 개발자들에게 현재 사용하는 장비를 활용하여 가능한 최상의 성능을 구현할 수 있도록 하는 도구를 제공합니다. DirectX를 활용하면 "Hardware Emulation Layer" (HEL, 하드웨어 에뮬레이션 계층)를 사용하여 특정 하드웨어 장비를 시뮬레이션 함으로써 여러분의 시스템이 가지고 있지 않는 기능을 필요로 하는 멀티미디어 어플리케이션까지도 개발할 수 있는데, HEL은 하드웨어와 같은 역할을 하는 소프트웨어 기반 드라이버를 제공합니다. 예를 들면, 3-D 이미지를 사용하는 DirectX 게임이 3-D 가속카드를 가지고 있지 않은 장비에서 구동될 수 있는데 그 이유는 DirectX가 3-D 카드와 유사한 기능을 제공(Simulate)하기 때문입니다.

DirectX 구성요소는 하드웨어 공급업자들에게 가장 유연한 플랫폼을 제공합니다. DirectX는 소프트웨어 드라이버를 통하여 컴퓨터의 하드웨어에 액세스 하므로, 하드웨어 개발자들은 현재나 미래의 하드웨어 기술을 최대한 활용할 수 있도록 해주는 특별한 DirectX 드라이버를 생산할 수 있습니다.

발췌: MS기술문서 
URL: 
http://www.microsoft.com/korea/directx/default.aspx?url=/korea/directx/productinfo/overview/ 

다이렉트X 기반구조(Foundation) 아키텍처 

 일부 게임에만 사용가능하던 다이렉트X는 이제 그우수성으로 인해 의존도가 높아져만 가고 있다. 더이상 게임에만 사용하는 것이 아닌 각종 소프트웨어와 그래픽카드의 장치드라이버까지 확장되고 있는 상황이다. 특히 그래픽카드 제조사들은 제품의 우수성을 입증하기 위해 하드웨어 개발과 함께 DirectX용 그래픽 디바이스 드라이버에 대한 연구 개발에 많은 시간을 투자한다.

 윈도우XP에는 8.0버젼이 기본설치가 되며, 9.xx로 업데이트시 보다 향상된 기능으로써의 멀티미디어관련 프로그램을 이용하게 되며, 최신버젼을 받는다고 이하 버젼의 소프트웨어가 작동하지 않는 경우는 없다. 내부적으로 버젼 7,8,9 인터페이스를 가지고 있기 때문에 소프트웨어가 개발된 환경에 맞추어져 동작되기 때문이다.

 사용자에게 가장 문제가 되는 점은 역시 관련파일들이 손상되거나 변형되는 문제이다. 디스플레이 디바이스 드라이버(*.dll) 파일들은 항상 손상되지 않도록 게임소프트웨어 설치시에 유의를 해야한다. 예를들면, 다이렉트X를 지원하는 구게임의 경우 게임설치시에 강제로 이전버젼의 다이렉트X가 설치된다던지 하는 경우에 문제의 소지가 발생한다.

MS기술문서에서 발췌
DirectDrawTM
 Microsoft DirectDraw API를 통하여 컴퓨터 비디오 어댑터 의 가속 하드웨어 기능에 아주 빠르게 액세스할 수 있습니다. 또한 모든 비디오 어댑터에서 그래픽을 표시하는 표준 방법을 지원하며 가속 드라이버를 사용하면 더 빨리 더 직접적으로 액세스할 수 있게 해 줍니다. DirectDraw는 게임과 2차원 그래픽 패키지 등의 프로그램과 디지털 비디오 코덱 등의 Windows 시스템 구성 요소에서 장치의 기능에 대한 추가 사용자 정보가 없어도 특정 디스플레이 장치의 기능에 액세스할 수 있는 장치 독립적인 방법을 제공합니다.  
Direct3DTM
 Microsoft Direct3D API(Direct3D)는 대부분의 새 비디오 어댑터에 포함된 3차원 렌더링 기능에 대한 인터페이스를 제공합니다. Direct3D는 저 수준 3-D API로 소프트웨어 프로그램이 가속기 하드웨어와 효율적으로 강력하게 정보를 주고 받는 장치 독립적인 방법을 제공합니다. Direct3D는 신형 컴퓨터에 대한 추가 가속 기능을 제공하는 특수 CPU 명령 집합 지원을 포함합니다.
DirectSoundTM
 Microsoft DirectSound API는 프로그램과 오디오 어댑터의 사운드 믹싱, 사운드 재생 및 사운드 캡처 기능을 연결합니다. DirectSound는 멀티미디어 소프트웨어 프로그램에 낮은 대기 시간 혼합, 하드웨어 가속 및 사운드 장치에 대한 액세스를 제공합니다. DirectSound는 기존 장치 드라이버와 호환을 유지하면서 이러한 기능을 제공합니다.
DirectMusicTM
(DirectSound3DTM)
 Microsoft DirectMusic API는 DirectX의 대화형 오디오 구성 요소입니다. 디지털 사운드 샘플을 캡처하고 재생하는 DirectSound API와 달리 DirectMusic은 사운드 카드나 내장된 소프트웨어 신시사이저에 의해 디지털 오디오로 변환되는 메시지 기반 음악 데이터뿐만 아니라 디지털 오디오에서도 사용됩니다. DirectMusic API는 MIDI(Musical Instrument Digital Interface) 포맷을 지원하며 압축 및 비압축 디지털 오디오 포맷을 모두 지원합니다. DirectMusic을 사용하여 소프트웨어 개발자는 직접적인 사용자 입력이 없어도 소프트웨어 환경에서 다양한 변화에 반응하는 풍부하고 역동적인 사운드 트랙을 만들 수 있는 능력을 제공합니다.
DirectPlayTM
Microsoft DirectPlay API는 모뎀, 인터넷 또는 LAN을 통한 게임 연결을 지원합니다. DirectPlay를 사용하면 통신 서비스에 쉽게 액세스할 수 있고 프로토콜 이나 온라인 서비스에 관계없이 게임 간에 서로 통신할 수 있습니다. DirectPlay는 멀티미디어 게임의 초기화를 단순화하는 로빙 서비스를 제공하며 중요한 게임 데이터가 네트워크에서 손실되지 않도록 해 주는 신뢰할 수 있는 통신 프로토콜을 지원합니다. DirectPlay 8.0에서는 새롭게 네트워크에 음성 통신을 지원하는데 이러한 음성 통신을 통해 멀티 플레이어 팀 기반 게임의 경기 능력을 크게 향상시키고 게임을 하는 동안 다른 사람과 대화를 나눌 수 있고 오락 게임을 새로운 차원으로 이끕니다.
DirectInputTM
 Microsoft DirectInput API는 마우스, 키보드 및 포스 피드백 게임 컨트롤러 등 기타 관련 장치뿐 아니라 조이스틱에서 게임과 프로세스 입력을 위한 고급 입력 기능을 제공합니다.
DirectShowTM
 Microsoft DirectShow API는 사용자 컴퓨터와 인터넷 서버의 멀티 미디어 파일의 고품질 캡처 및 재생을 제공합니다. DirectShow는 ASF(Advanced Streaming Format), AVI(Audio-Video Interleaved), DV(Digital Video), MPEG(Motion Picture Experts Group),MP3(MPEG Audio Layer-3), WMA/WMV( Windows Media Audio/Video), WAV 파일 등 다양한 종류의 오디오 및 비디오 파일을 지원합니다. DirectShow는 비디오 캡처, DVD재생, 비디오 편집 및 혼합, 하드웨어 가속 비디오 디코딩, 아날로그 및 디지털 텔레비전 신호 브로드캐스팅 전환 등을 가능하게 해 줍니다.
반응형
Posted by Real_G