Tech

OpenGL 모드에서 DirectX 모드에서

onesixx 2007. 10. 15. 00:28
반응형
OpenGL(Open Graphics Library)
워크스테이션 급에서 고 품위 그래픽을 지원하기 위한 소프트웨어 솔류션
SGI사에서 최초로 개발
말 그대로 Open된 이러한 솔류션은 PC시장에 급속히 이식되어 왔으며, 2D/3D를 불문하고 게임과
그래픽 어플리케이션에서 많이 사용되고 있다.
DirectX의 경우와 비슷한데 이는 게임에 주로 사용되고 있는데 반하여 OpenGL은
그래픽소프트웨어를 타켓으로 개발되었다.

원래 게임이 아닌 그래픽전문가용 라이브러리로 개발된 것으로 현 DirectX 에 비해 월등한 3D 알고리즘을 제공하고 있다. 
하지만
진정한 Full OpenGL을 수행하기 위해서는 그래픽 칩셋 자체의 부동 소수점 연산기능을 지닌 Geomerty엔진이 탑재되어있어야 하며,
ICD(Installable Client Driver)드라이버 지원도 필수적이다.


일반적으로 OpenGL API가 급부상하게 된 계기는 1인칭 3D액션게임으로 유명한 IDsoft사로 인해 널리 알려지기 시작하였다. 이것은
우리가 잘 알고 있는 Quake Series게임이며 동시에 Quake 주 엔진으로 사용된 것이다. Quake제작 당시 OpenGL은
WorkStation급에서만 사용된 그래픽 솔루션으로 일반적인 3D게임에 사용하리라 곤 생각도 못한 것이었다. 또한 당시 데스크탑 PC에
들어가는 대부분의 그래픽 칩셋도 OpenGL 연산이 불가능하였으며, 드라이버 제작에 있어서도 OpenGL 라이센스의 까다로운 요구기능이 많아
그래픽 칩셋 제조회사들이 OpenGL Driver를 만들지 않은 이유도 있었다.


이렇게 까다로운 환경 속에 ID사의 새로운 3D 전략물인 Quake 엔진을 OpenGL API기반으로 제작하기 시작하였었다. 물론
OpenGL이 객체모델을 사용하지 않는 점과, 게임에서 OpenGL의 모든 기능이 사용되지 않는 점을 착안해 새로운 형식의 OpenGL 시스템
파일을 만들게 되었으며, 이것은 완전한 Full OpenGL이 아닌 OpenGL의 일부만 사용하는 새로운 형식의 알고리즘을 개발하였던 것이다.
결과는 Full OpenGL 드라이버인 ICD(installable Client Driver)에 대한 제한적으로 지원하게끔 만든 MCD(Mini
Client Driver)이었다. 물론 본질적으로 그래픽용 라이브러리인 만큼 Quake 엔진의 성능은 엄청난 파워를 보여주고 있다.

게임과 같은 대중적인 힘을 바탕으로 OpenGL은 전문성을 벗어나기 시작하였던 것이다. 현재는 Quake Series 형식의 OpenGL
엔진을 사용한 게임이 상당 수 있으며, 모든 그래픽카드에서 제한적이나마 OpenGL을 활용할 수 있게 되었던 것이다. 이렇게 대중성을 바탕으로
보편화되어진 반면, 보다 전문성을 고려한 OpenGL도 계속적인 발전이 있었다. 이는 FireGL Series와 같은 고급 하드웨어 출현과 함께
다양한 고급 그래픽 Application들이 등장하고 있으며, 현 최고의 그래픽 소프트웨어 솔루션으로서 자리잡고 있음을 보여주는 결과이기도
하다.


아쉬운 이야기이지만 한때는 SGI사의 OpenGL API와 다음에 설명될 Direct 3D API의 장점만이 통합되어져 새로운 API
형식인 Fahrenheit 프로젝트가 공동 연구되기도 하였다.


Direct 3D의 범용성을 고려하여 엄격하지 않는 라이센스를 제공함으로 인해 빠른 보급이 이루어진 마소의 범용 API이다. 다른
API로는 제미니의 OpenGVS,Multigen,GAMEGEN,miniGL등이 있다.   


DirectX는 하드웨어와 소프트웨어 사이에서 소프트웨어가 필요로 하는 하드웨어 접근/기능을 일괄 관리하는 중간자 역할을 함으로써
프로그래머들은 더 이상 개별 하드웨어에 신경쓰지 않고 표준 컨트롤러(?)인 DirectX하고만 통신이 가능하도록 만들기만 하면 되는 것이죠.
소프트웨어는 필요한 작업을 DirectX에 얘기를 하고 DirectX가 이를 듣고 그 작업에 필요한 개별 하드웨어 컨트롤을 수행하게
되었죠.


DirectX는 운영체제의 일부로서 하드웨어 드라이버로서의 기능을 수행함으로써 고급 멀티미디어와 게임 프로그램이 운영체제에서 돌아갈 수
있도록 해줍니다. DirectX는 그래픽을 담당하는 DirectDraw와 Direct3D, 사운드를 담당하는 DirectSound와
DirectSound3D 그리고 DirectMusic, 입력장치를 다루는 DirectInput, 네트워크 연결을 다루는 DirectPlay로
구성되어 있습니다.


 


▶DirectDraw & Direct3D


윈2000에서 그래픽을 담당하는 세가지 서브시스템은 GDI(Graphics Device Interface), DirectDraw,
Direct3D입니다. 이 중 Windows 3.X때부터 등장한 GDI는 윈도우즈의 기본 그래픽 엔진으로 기능함으로써 오랫동안 존재해왔기 때문에
호환성이 뛰어나다는 장점이 있는 반면에 고급 그래픽 (작업)을 처리하는 데 필요한 하드웨어 가속을 지원하지 않습니다. GDI는 응용 프로그램에서
요청한 그래픽 데이터를 윈도우 커널에 전달해주는 것으로 이 커널은 다시 그래픽 메모리를 액세스하는데 윈도우에서 GDI를 이용한 비디오 메모리
접근방식은 속도가 무척 느리기 때문에 게임에서 필요로 하는 빠른 데이터 처리를 수행할 수 없습니다. DirectDraw와 Direct3D가
필요한 대목이죠.


DirectDraw는 기본적으로 비디오 메모리 관리자로서 2D 그래픽 가속을 담당하는 데 GDI와 호환을 유지 하면서 직접 디스플레이
디바이스에 접근할 수 있는 소프트웨어 인터페이스입니다. GDI와 비교시, 비디오 메모리에 직접 접근함으로써 고속의 그래픽 처리를 가능하게 하죠.
2D,3D,애니메이션,비디오를 위해 해당 그래픽 디바이스의 기능을 직접 수행하는 API를 제공한다. 그래픽 카드의 메모리를 직접 조작하거나
오버레이와 페이지 플립핑 같은 기능을 프로그램에서 직접 실행하게 하는 걱 등


Direct3D는 입체적인 3차원 화면을 표시하는 기능을 수행함으로써 윈도우에서 작동하는 게임을 3차원으로 현실감 있게 표현할 수 있게
해주는데 주로 3D 가속기능을 지원하는 하드웨어를 필요로 합니다.


리얼 타임 3D 랜더링 엔진으로 기하학적 변형, 밝기,래스터라이제이션과 같은 서비스를 제공하며, 다음의 두 가지 API집합


  Retained mode - 3D객체와 3D 그래픽을 다루는 고수준 API


  Immediate mode - Polygon 과 Vretex 기반의 랜더링을 위한 고수준 API


일반적으로 OpenGL API가 급부상하게 된 계기는 1인칭 3D액션게임으로 유명한 IDsoft사로 인해 널리 알려지기
시작하였다. 이것은 우리가 잘 알고 있는 Quake Series게임이며 동시에 Quake 주 엔진으로 사용된 것이다.
Quake제작 당시 OpenGL은 WorkStation급에서만 사용된 그래픽 솔루션으로 일반적인 3D게임에 사용하리라 곤 생각도
못한 것이었다. 또한 당시 데스크탑 PC에 들어가는 대부분의 그래픽 칩셋도 OpenGL 연산이 불가능하였으며, 드라이버 제작에
있어서도 OpenGL 라이센스의 까다로운 요구기능이 많아 그래픽 칩셋 제조회사들이 OpenGL Driver를 만들지 않은 이유도
있었다.


이렇게 까다로운 환경 속에 ID사의 새로운 3D 전략물인 Quake 엔진을 OpenGL API기반으로 제작하기
시작하였었다. 물론 OpenGL이 객체모델을 사용하지 않는 점과, 게임에서 OpenGL의 모든 기능이 사용되지 않는 점을 착안해
새로운 형식의 OpenGL 시스템 파일을 만들게 되었으며, 이것은 완전한 Full OpenGL이 아닌 OpenGL의 일부만
사용하는 새로운 형식의 알고리즘을 개발하였던 것이다. 결과는 Full OpenGL 드라이버인 ICD(installable
Client Driver)에 대한 제한적으로 지원하게끔 만든 MCD(Mini Client Driver)이었다. 물론 본질적으로
그래픽용 라이브러리인 만큼 Quake 엔진의 성능은 엄청난 파워를 보여주고 있다.


게임과 같은 대중적인 힘을 바탕으로 OpenGL은 전문성을 벗어나기 시작하였던 것이다. 현재는 Quake Series
형식의 OpenGL 엔진을 사용한 게임이 상당 수 있으며, 모든 그래픽카드에서 제한적이나마 OpenGL을 활용할 수 있게 되었던
것이다. 이렇게 대중성을 바탕으로 보편화되어진 반면, 보다 전문성을 고려한 OpenGL도 계속적인 발전이 있었다. 이는
FireGL Series와 같은 고급 하드웨어 출현과 함께 다양한 고급 그래픽 Application들이 등장하고 있으며, 현
최고의 그래픽 소프트웨어 솔루션으로서 자리잡고 있음을 보여주는 결과이기도 하다.


아쉬운 이야기이지만 한때는 SGI사의 OpenGL API와 다음에 설명될 Direct 3D API의 장점만이 통합되어져 새로운 API 형식인 Fahrenheit 프로젝트가 공동 연구되기도 하였다.


Direct 3D의 범용성을 고려하여 엄격하지 않는 라이센스를 제공함으로 인해 빠른 보급이 이루어진 마소의 범용 API이다. 다른 API로는 제미니의 OpenGVS,Multigen,GAMEGEN,miniGL등이 있다.   


DirectX는 하드웨어와 소프트웨어 사이에서 소프트웨어가 필요로 하는 하드웨어 접근/기능을 일괄 관리하는 중간자 역할을
함으로써 프로그래머들은 더 이상 개별 하드웨어에 신경쓰지 않고 표준 컨트롤러(?)인 DirectX하고만 통신이 가능하도록
만들기만 하면 되는 것이죠. 소프트웨어는 필요한 작업을 DirectX에 얘기를 하고 DirectX가 이를 듣고 그 작업에 필요한
개별 하드웨어 컨트롤을 수행하게 되었죠.


DirectX는 운영체제의 일부로서 하드웨어 드라이버로서의 기능을 수행함으로써 고급 멀티미디어와 게임 프로그램이
운영체제에서 돌아갈 수 있도록 해줍니다. DirectX는 그래픽을 담당하는 DirectDraw와 Direct3D, 사운드를
담당하는 DirectSound와 DirectSound3D 그리고 DirectMusic, 입력장치를 다루는 DirectInput,
네트워크 연결을 다루는 DirectPlay로 구성되어 있습니다.


 


▶DirectDraw & Direct3D


윈2000에서 그래픽을 담당하는 세가지 서브시스템은 GDI(Graphics Device Interface),
DirectDraw, Direct3D입니다. 이 중 Windows 3.X때부터 등장한 GDI는 윈도우즈의 기본 그래픽 엔진으로
기능함으로써 오랫동안 존재해왔기 때문에 호환성이 뛰어나다는 장점이 있는 반면에 고급 그래픽 (작업)을 처리하는 데 필요한
하드웨어 가속을 지원하지 않습니다. GDI는 응용 프로그램에서 요청한 그래픽 데이터를 윈도우 커널에 전달해주는 것으로 이 커널은
다시 그래픽 메모리를 액세스하는데 윈도우에서 GDI를 이용한 비디오 메모리 접근방식은 속도가 무척 느리기 때문에 게임에서 필요로
하는 빠른 데이터 처리를 수행할 수 없습니다. DirectDraw와 Direct3D가 필요한 대목이죠.


DirectDraw는 기본적으로 비디오 메모리 관리자로서 2D 그래픽 가속을 담당하는 데 GDI와 호환을 유지 하면서 직접
디스플레이 디바이스에 접근할 수 있는 소프트웨어 인터페이스입니다. GDI와 비교시, 비디오 메모리에 직접 접근함으로써 고속의
그래픽 처리를 가능하게 하죠. 2D,3D,애니메이션,비디오를 위해 해당 그래픽 디바이스의 기능을 직접 수행하는 API를
제공한다. 그래픽 카드의 메모리를 직접 조작하거나 오버레이와 페이지 플립핑 같은 기능을 프로그램에서 직접 실행하게 하는 걱 등


Direct3D는 입체적인 3차원 화면을 표시하는 기능을 수행함으로써 윈도우에서 작동하는 게임을 3차원으로 현실감 있게 표현할 수 있게 해주는데 주로 3D 가속기능을 지원하는 하드웨어를 필요로 합니다.


리얼 타임 3D 랜더링 엔진으로 기하학적 변형, 밝기,래스터라이제이션과 같은 서비스를 제공하며, 다음의 두 가지 API집합


  Retained mode - 3D객체와 3D 그래픽을 다루는 고수준 API


  Immediate mode - Polygon 과 Vretex 기반의 랜더링을 위한 고수준 API


 


▶DirectSound(DirectSound,DirectSound3D, DirectMusic)


게임을 할 때 그래픽과 더불어 빼놓을 수 없는 중요한 요소인 오디오를 담당하는 DirectX 구성요소들입니다.


DirectSound : 윈 2000의 기본 오디오 인터페이스로서 사운드 믹싱, 하드웨어 가속기능, 사운드 디바이스에 대한
직접 액세스를 가능하게 해주는 API로 구성되어 있고, DDSOUND.LIB로 제공되는 다이렉트 사운드 라이브러리는 게임뿐
아니라 일반 어플리케이션에서도 독립적으로 사용할 수 있어 광범위한 응용범위를 가집니다.


DirectSound3D : 3차원 입체음향을 제공함으로써 서라운드 오디오 시스템이 없이도 보다 현실감 있는 사운드를 즐길 수 있도록 해줍니다.


DirectMusic : 게임의 진행에 따라 급박하게 또는 잔잔하게 바뀌는 등 배경음악 요소로 많이 쓰이며 프로그래밍 차원에서 보다 융통성 있는 이터페이스를 제공합니다.


 


▶DirectPlay & DirectInput


DirectPlay : 온라인상에서의 게임 플레이를 단순화해주는 인터페이스로서 프로토콜이나 서비스와 독립적으로 사용자들의 컴이 통신할 수 있도록 해줍니다. 다중 사용자 들이 네크워크를 가능하게 해준다.


DirectInput : 조이스틱이나 게임패드 등의 게임 컨트롤러를 담당합니다.


 


 


OpenGL 은 하드웨어 가속기능을 표준적으로 인터페이스하는 API 로서 그 기본적인 역할이 있습니다.


OpenGL은 원래 Unix 환경을 기준으로 만들어진 것이지만 Windows NT용 OpenGL을 시작으로 Windows95 OSR2 이후 버전, Windows98 에는 기본적으로 시스템의 일부로 설치되어 있습니다.


물론 OpenGL이 기본적으로 설치 되어 있지 않은 오래된 Windows95 시스템에도 따로 OpenGL을 설치할 수 있습니다.


여기서 유의하실 것은 윈도우즈 시스템에 기본적으로 설치된 OpenGL 은 소프트웨어 드라이버로 구성된 OpenGL이라서 3차원 가속기와는 일단 무관합니다.


1. OpenGL driver 설치 확인법


C:\Windows\System 디렉토리에 opengl32.dll glu32.dll 파일이 있으면 MS사의 Windows용 OpenGL이 설치된겁니다.


만약 SGI사의 Windows용 OpenGL이 설치되어있다면 opengl.dll, glu.dll 라는 파일이 같은 디렉토리에 있을 겁니다.


물론 둘다 있을 수도 있습니다.


2. OpenGL 개발환경 확인법..


OpenGL 응용프로그램을 만들려면 윈도우즈 환경에서는 Visual C++ 이 있으면 됩니다.


Visual C++ 5.0 이상이면 기본적으로 OpenGL SDK 가 포함되어 있고 그 도큐먼트도 다 포함되어 있습니다.


Visual C++의 \include\GL 디렉토리에 gl.h, glu.h 의 헤더파일들이 있고 \Lib 디렉토리에
opengl32.lib, glu32.lib 라이브러리 파일이 있으면 OpenGL용 응용 프로그램을 작성해서 컴파일하고 링크해서
실행파일을 만들 수 있습니다.


3. 3차원 가속기용 OpenGL 드라이버 확인법..


요즘의 3차원 가속기들은 거의 모두다 OpenGL 드라이버를 지원합니다.


비디오 드라이버가 설치될 때 보통 OpenGL 드라이버들도 함께 설치가 될텐데..


기존에 소프트웨어 OpenGL 드라이버가 이미 있다면 덮어 쓰는 방식으로 설치될 겁니다.


\Windows\System 디렉토리의 opengl32.dll 혹은 opengl.dll 파일을 선택하고 오른쪽 마우스 버튼을 클릭하고 등록정보를 선택해서 확인해보면 버전이나 저작권 회사이름 등이 나오는데..


MS사나 SGI사가 아니 3차원 가속기 회사의 이름이 나온다면 해당 3차원 가속기용 OpenGL이 설치된 겁니다.


4. OpenGL과 화면모드


OpenGL은 비디오 카드에서 지원하는 모든 화면모드를 지원하지 않습니다.


특히 3차원 가속기용 OpenGL이 설치된 경우 3차원 가속기능이 지원되지 않는 모드의 경우는OpenGL이 작동하지 않습니다.


창모드냐 전화면모드냐도 3차원 가속기용 OpenGL 드라이버에 의존하는 것이기 때문에 가속기에 따라 달라집니다.


물론 전 화면모드만 지원하는 경우는 창모드로는 뛰울 수 없습니다.


(창모드만 지원하는 경우는 없습니다)


5. OpenGL과 DirectDraw


OpenGL이 3차원 화면을 렌더링 하려면 프레임 버퍼가 있어야 합니다.


기본적으로 윈도우즈에서 화면에 무언가를 출력하려면 GDI를 이용하기 때문에 Windows용 OpenGL도 마찬가지로 GDI를 통해서 프레임 버퍼를 얻습니다.


DirectDraw의 경우도 IDirectDrawSurface::GetDC 를 통해서 GDI에 호환되는 DC를 얻을 수 있으므로 당연히 이 DC를 OpenGL에 넘겨주면 DirectDraw 표면에도 렌더링이 됩니다.


물론 화면의 픽셀포맷이 호환되지 않으면 작동하지 않겠지만요.


예컨데 가속기용 OpenGL드라이버는 8비트 칼 라 모드를 지원하지 않는데, 8비트 칼라 화면을 만들고 여기다 렌더링 하려면 안되겠지요.


미국 마이크로소프트사가 1995년 윈도95윈도NT 4.0용으로 개발하였다. 윈도환경멀티미디어 기능과 오락기능을 강화시킨 프로그램들의 집합체이다. 2차원 및 3차원의 도형·음성·동화() 등 각종 미디어를 사용한 응용프로그램이 하드웨어 장치를 직접 접속한다고 해서 '다이렉트'라는 이름이 붙여졌다. 1995년에 X1을 발표한 이후에 기능을 계속 강화하여 1997년에 X5를 발표하였다.

컴퓨터 게임에 적합한 기능을 고루고루 갖추고 있다. 다이렉트 드로우(Direct Draw)는 그래픽 가속기 기능을 하며, 다이렉트 3D는 그래픽 가속기 없이 3차원 그래픽을 보다 자연스럽게 구현하게 해준다. 다이렉트 사운드사운드 기능을 직접 콘트롤하고, 다이렉트 3D 사운드는 3차원 사운드 기능을 콘트롤한다. 다이렉트 인풋조이스틱·마우스 등 게임에 필요한 보조장치들을 제어해 주고, 다이렉트 플레이는 멀티플레이·모뎀플레이 등을 통일된 규격상태로 즐길 수 있게 해준다.

 

 

다이렉트 X 역할

 

먼저 운영체제와의 호환성입니다.

Win95가 등장하면서 현재의 운영체제인 GUI(Graphic User Interface : 그래픽 유저 인터페이스)시스템으로 바뀌면서 프로그래머에게는 어려운 문제가 발생했습니다. 그것은 게임등에 가장 중요한 하드웨어 자원인 그래픽카드사운드 카드를 운영체제가 항상 사용하고 있기 때문에 프로그램에 많은 제약이 생겼기 때문입니다. Dos시절에는 프로그램 수행시 대부분의 자원을 독점할 수 있었지만 현재의 Windows는 멀티테스킹 환경이기 때문에 운영체제가 요청할 경우 사용하던 자원을 돌려주어야 하고, 운영체제가 사용중인 부분에 대해서 잘못 프로그램 할 경우 많은 충돌이 일어났습니다.


 


때문에 MS에서 프로그래머가 하드웨어를 쉽게 사용할 수 있도록 한것이 바로 DirectX입니다.DirectX는 하드웨어를 제어할 수 있는 함수를 제공하고 운영체제와의 충돌을 방지함으로서 프로그래머가 보다 쉽게 프로그래밍할 수 있는 환경을 제공하는데 그 목적이 있습니다.




두번째로 각 시스템의 호환성 보완입니다.


 


일반 사용자의 PC환경은 그 종류가 수없이 다양합니다. 개인 조립PC에서 대기업 제품도 다양한 종류가 판매되고 사용됩니다. 프로그래머는 이러한 모든 상황을 고려하여 모든 PC에서 동작하는 프로그램을 작성해야 하지만 그 가지수가 너무 많기 때문에 모든 PC에서 문제없이 수행되는 프로그램은 상당히 제한적일 수 밖에 없습니다. DirectX의 다른 기능은 가상 환경을 작성하여 프로그래머가 DirectX하에서 프로그래밍 할 경우 같은 버전의 DirectX가 설치된 PC에서 문제없이 동작하도록 하는 역할을 합니다.


 


한 예로 한 프로그래머가 하드웨어 T&L엔진을 사용한 프로그램을 작성했다고 가정하겠습니다. 만약 사용자의 PC에 있는 그래픽 카드가 하드웨어 T&L을 지원하지 않는다고 해도 DirectX는 소프트웨어적으로 T&L엔진을 구성하여 문제없이 동작하도록 하는 것입니다. 이것은 가상머신(Virtual Machine)이라 하며 DirectX는 이 실제 없지만 프로그램적으로 하드웨어가 존재하는 것처럼 만들어 문제없이 프로그램이 동작하도록 하는 역할을 합니다.


 


따라서 프로그래머는 사용자의 PC환경을 고려하지 않고 DirectX환경만 생각 한 후 프로그램을 작성할 수 있습니다.

일반 PC용게임이나 온라인 게임에서 DirectX 설치를 권장하는 이유 역시 그 프로그램이 권장하는 DirectX환경에서 작성된 것이기 때문입니다.



결 국 DirectX는 프로그래머가 보다 쉽게 프로그램 할 수 있는 환경을 조성하고 사용자가 프로그래머가 의도한 그래픽과 사운드를 가능한 그대록 즐길 수 있도록 하는 프로그램입니다.DirectX 역시 버전이 있으며 상위버전은 하위버전의 기능을 포함하고 있습니다. 따라서 게임등에서 권장하는 DirectX버전과 같거나 상위버전이 설치되어 있다면 추가로 설치할 필요는 없습니다.


 

*버전


 


DirectX6

DirectX가 본격적으로 보급되기 시작한 버전으로 3D 렌더링 가속을 지원하는 그래픽 카드를 지원합니다.



DirectX7

하드웨어 T&L엔진용 드라이버가 포함되어 있으며 이시기에 나온 그래픽 카드는 GeForce2가 대표적이죠. CPU에서 담당하던 지오메트리 처리중 일부를 그래픽 카드에서 하드웨어적으로 지원하는 기능을 가지고 있습니다.



DirectX8.x

하드웨어 T&L엔진에 Vertex Shader 1.x와 Pixel Shader 1.x기능이 추가되었습니다. 또한 Bump Mapping등의 질감가속 기능도 DirectX8부터 추가된 기능들입니다.



DirectX9

프로그래머블 쉐이더 기능을 지원하는 최신 버전입니다. 하드웨어 T&L이 아닌 프로그램이 가능한 하드웨어를 사용함으로서 영화품질의 3D화면을 실시간으로 처리가 가능하도록 하는 기능을 가지고 있습니다. Vertex/Pixel Shader 2.x버전을 지원하며 사용 색상등도 대폭 늘어났습니다.



현 재 Windows환경에서는 대부분 DirectX기반의 프로그램이 많기 때문에 그래픽 카드들도 DirectX 지원버전을 밝히고 있습니다. 또한 그래픽 카드의 세대를 구분하는데 DirectX의 어떤 버전을 지원하느냐로 결정하기도 합니다. 한 예로 GeForce2는 DirectX7세대, RADEON 7000~9000, GeForce 3/4는 DirectX8세대, Radeon 9700, GeForceFX는 DirectX9세대로 구분합니다.

 

 

---------------------------------------------------------------------

 

-- DirectX에 대하여 --


DirectX란 무엇인가?

윈도에서 게임 개발자나 멀티미디어 소프트웨어 개발자들을 위해 마이크로
소프트에서 만들어낸 게임 SDK를 말하는 것이다. 이것은 Direct Draw, Dire
ct Sound, Direct Play, Direct Input으로 구성되어있고, 이들의 이름을 모
아 이것들을 DirectX라고 한다. 이것들 모두 윈도상에서 그래픽, 사운드,
입력처리와 같은 작업의 속도를 높이고, 개발자들이 다양한 기능을 쉽고 표
준화된 환경에서 개발할 수 있도록 도와주는 것이다.

자세히 살펴보게 되면,

Direct Draw

DirectDraw는 윈도95 게임 SDK의 그래픽요소로서 디바이스에 독립적인, 일
치된 형태로 그래픽 하드웨어를 직접 처리하는 인터페이스를 제공한다. Dir
ectDraw는 본질적으로 비디오 메모리 관리자이자. 이런 이유로 DirectDraw
는 상위 레벨의 API는 아니다. DirectDraw의 배후에 있는 기본적인 디자인
목표는 그들이 존재할 때 하드웨어 기능에 장점을 가질 수 있는 그래픽 하
드웨어에 대해 최고로 최적화된 디바이스에 독립적인 인터페이스를 제공하
는 것이다. 즉 성능이 좋은 그래픽카드(Direct-X를 지원하는)를 가지고 있
다면 그만큼 고성능의 그래픽처리를 할 수 있고 설사 하드웨어적인 지원이
없더라도(Direct-X를 지원하지 않는)소프트웨어적으로 그래픽을 에뮬레이트
하기 때문에 속도는 좀 느려질지라도 디바이스에 크게 구애 받지 않는다. D
irectDraw는 하드웨어 추상계층(HAL)을 통해 그래픽 하드웨어를 처리한다.
HAL은 그래픽 하드웨어에 일정한 인터페이스를 제공하는 DirectDraw 디바이
스 드라이버에 의해 실행되는 소프트웨어 층이다. HAL은 하드웨어에 종속적
이고 하드웨어 특성 코드만을 포함한다. 또 HAL은 16비트나 32비트에 구애
받지 않는다. 그러나 윈도NT의 경우는 반드시 32비트여야 한다. DirectDraw
HAL의 유일한 목적은 그래픽 하드웨어에 대한 일상적인 DirectDraw요청을
처리하거나 하드웨어능력을 DirectDraw로 되돌려 주기 위한 것이다. 다음
그림은 DirectDraw의 모델을 보여주는 것이다. DirectDraw를 통해 게임 개
발자들은 이제 더 이상 수 많은 하드웨어 드라이버 인터페이스를 맞추는 작
업을 하지 않고도 GDI를 우회한 하위레벨 API로 하드웨어를 직접 제어할 수
있게 되었다. 즉 그래픽 디바이스에 상관없이, 또, 윈도 디바이스 드라이버
계층을 거치지 않기 때문에 보다 간단하게 그래픽 루틴을 구현할 수 있고
빠른 처리 속도를 기대할 수 있게 되었다.

Direct Sound

DirectSound는 게임SDK에서 사운드 처리를 담당하는 부분으로써 다음과 같
은 스펙과 성질을 가지고 있다.
        다채널의 디지털 사운드를 실시간으로 믹싱
        빠른 응답속도
        하드웨어 가속기능
        사운드 하드웨어에 직접적인 액세스
        스테레오 사운드의 제어
        사운드의 볼륨과 주파수제어
        3D 입체음향제어
        압축된 사운드 데이터 지원
        다중 Play어 게임을 위한 모뎀, 네트워크에서의 음성대화
        웨이브 테이블을 이용한 미디 테이블
DirectSound는 HAL에 의한 경우 여러 채널의 믹싱된 사운드를 20마이크로소
프트 이하의 빠른 속도로 응답을 해 제작자에게 보다 실감나는 사운드를 지
원할 수 있도록 한다. 그러나 사운드 카드가 HAL을 지원하지 않는다 하더라
도 HEL의 코Draw 윈도95의 표준 사운드 시스템을 사용하기 때문에 문제가
없다. DirectSound에서 사운드의 가속기능은 가속이란 의미 그대로 사운드
버퍼의 내용을 고속으로 연주한 다기 보다, 시스템의 CPU에 부하를 주지 않
고 사운드카드 내에서 독립 적으로 사운드 버퍼 내용을 출력한다는 의미가
있다.
최근 사운드 카드는 자체 메모리와 이를 제어할 수 있는 프로세서를 내장
하고 있는 추세이다. 따라서 사운드 카드내의 메모리를 사운드 출력 버퍼로
사용하면 시스템과는 별개로 사운드 카드 자체가 프로세서를 통해 내부 램
의 사운드 스트림 데이터를 스피커로 출력할 수 있다. 결국 시스템은 CPU에
서 사운드 데이터에 관한 부하가 걸리지 않으므로 전체 속도가 향상될 것이
고, 사운드는 독립적으로 출력되므로 시스템의 부하에 따라 사운드가 늘어
지거나 끊기는 일은 없을 것이다.

Direct Input

DirectInput은 Win32환경에서 아날로그와 디지털 조이스틱을 사용할 수 있
도록 해줌으로써, 가장 일반적인 조이스틱에서부터 특수한 조이스틱 특히
미래에 나올 디지털 조이스틱을 쉽게 사용 할 수 있는 방법을 제공한다.
DirectInput은 조이스틱 정보를 관리하기 위한 등록 기능을 제공할 뿐만
아니라 확장된 조이스틱 정보를 다루기 위한 새로운 API를 제공한다. Direc
tInput은 운영체제가 동작하는 시점에서부터 제공된다. DirectInput은 아날
로그 조이스틱의 경우 4축 정보와 4개의 버튼을 가진 두 개의 조이스틱을
동시에 사용할 수 있다. 또는 2축 정보와 4개의 버튼을 가진 4개의 조이스
틱을 동시에 지원하고 있다. 아날로그 조이스틱과는 달리 디지털 조이스틱
의 경우에는 6개의 축과 32개의 버튼을 가진 조이스틱 18개를 동시에 사용
하는 것도 가능하다. 아날로그 조이스틱의 값은 하드웨어적인 특성에 의해
폴링 방식으로 값을 결정하도록 되어 있다. 하지만 이러한 폴링 방식은 많
은 시스템 자원, 특히, CPU의 낭비를 초래한다.
따라서 게임SDK의 조이스틱 컨트롤 VxD는 되도록 이면 아날로그 조이스틱
을 위한 폴링 작업에 최소한 CPU시간을 줄여 정확한 결과를 제공 할 수 있
도록 디자인 되었다.

Direct Play

DirectPlay는 본격적인 게임용 통신 인터페이스로 통신 게임에 꼭 필요한
기능을 갖춘 비교적 간단한 API로 구성되어 있다. 더구나 모든 통신 접속이
단일한 프로그램 인터페이스를 제공하기 때문에 프로토콜 간의 차이점을 생
각하지 않고 일관된 프로그래밍 작업을 할 수 있다. DirectPlay는 크게 세
션의 생성과 접속, 게임 플레이어와 그룹의 관리, 메시지 교환 들리 주요
내용이 되며, Play어간 서로 메시지를 주고 받는 메커니즘으로 되어 있다.
이러한 DircetPlay를 이용하여 프로그래밍 하는 방식을 정리하면 다음과 같
다.

1. 모뎀, IPX,TCP/IP중 가능한 서비스 프로바이더를 나열해 어떤 것을 사
용할 지 사용자가 선택하도록 한다.
2. 선택된 서비스 프로바이더를 통해 여러 사용자가 함께 게임을 즐길 수
있는 환경인 세션을 생성한다.
3. 나머지 Play어는 생성된 세션에 접속해 이를 오픈 한다. 오픈 한 세션
에서 동작할 Play어를 생성한다. Play어의 고유한 ID를 사용해 Play어 끼리
게임 진행에 필요한 내용을 메시지로 교환한다. 각 Play어의 게임 프로그램
은 이 같은 상대방 메시지를 게임 진행에 적용한다.
4. 게임이 끝나면 생성한 게임 세션과 DirectPlay객체를 해제한다.

Direct 3D

  Direct3D는 하드웨어 가속 기능을 충분히 활용하여 높은 성능을 구현 시
켜 준다. Direct3D는 크게 두 계층으로 나뉘어서 각각 서비스가 되고 있다.
Direct3D 는 이를 직접 모드와 보유모드 라고 하는 두 가지 레벨의 3D프로
그래밍 인터페이스로 서비스를 제공하는데 개발자는 이중 한가지 모드만을
선택해 작업을 해야 한다. Diect3D 직접 모드란 말 그대로 3D그래픽 프로그
램을 3차원 매쉬 (mesh) 객체, 텍스쳐맵, 광원, 카메라, 프레임 등으로 추
상화해 상위레벨로 쉽게 다를 수 있도록 지오메트리 엔진 보유한 프로그
래밍 인터페이스 모드를 말한다.
3D 게임을 제작 하면 외부에서 3D그래픽 데이터를 제작해 외부에서 3차원
그래픽 데이터를 제작해 DIrect3D에서 이를 다룰 수 있도록 해야 하는데, D
irect3D에서는 3차원 객체를 표현하기 위해서 .X 확장자를 가진 파일 포맷
을 사용한다. 이 파일 포맷은 3차원 객체의 프레임 정보와 텍스처, 애니메
이션 세트, 그리고 사용자 정의 객체 등의 정보를 담고 있다. Direct3D에서
는 3차원 그래픽 툴로 널리 사용되는 3D 스튜디오용 그래픽 데이터를 변환
할 수 있는 CONV3DS.EXE 라는 도스용 유틸리티가 지원 된다. 따라서 3D 스
튜디오로 만들어진 객체는 Diret3D에서 그대로 가져다 쓸 수 있다. Direct3
D는 3D 가속기가 없는 486 VESA VGA 시스템에서도 상당한 속도를 보여주나
더 많은 폴리곤을 사용하는 고 수준의 3차원 게임을 위해서는 아무래도 더
나은 성능의 시스템이 필요하다는 것은 두말 할 나위도 없다.
  빠른 성능에 잘 정리 되어 있는 Dicret3D 의 상위레벨 서비스는 3차원 프
로그램을 활성화 시킬 것이다. 더구나 게임이 아닌 일반 멀티미디어 어플리
케이션에서의 3차원 컨트롤 수준이라면 사용법이나 성능에 있어서 최상의
선택이 아닌가 싶다. 또한 앞으로 고성능의 3차원 가속능력을 가진 하드웨
어가 대중화 된다면 Dircet3D는 더욱 위력을 발휘할 것이다.


DirectX 의 등장배경
 
 기존에 PC의 운영 체제로 자리잡고 있던 도스는 개발자 혹은 사용자가 직
접 하드웨어 리소스를 제어하는 것이 어렵지 않았으며 많은 게임 개발사에
서는 자체적으로 게임 엔진 툴을 만들어 사용해왔다. 그러나 윈도95가 등
장하면서 상황은 돌변하였다. 윈도95의 커널은 완벽하다고는 할 수 없지만
윈도3.1 때 보다는 훨씬 견고한 시스템을 제공하였으며 기존에 개발된 도스
용 게임 엔진 윈도95에 알맞은 게임을 제작하는데 걸림돌이 되어 버렸다.
이것은 마이크로소프트에도 그리 달갑지 않은 일이었다. 신형 하드웨어나 O
S의 빠른 보급을 위해서는 게임이 필연적이라는 사실은 이미 컴퓨터 업계에
서 일반 상식처럼 되어 버렸다. 따라서 마이크로소프트에서는 이에 대한 해
결책을 내놓아야 했고 그 결과가 바로 DirectX 이다.


DirectX 의 구조
 
DirectX의 구조적인 측면은 윈도NT에서 쉽게 찾아볼 수 있다. 윈도NT의 경
우 OS와 하드웨어 사이에 HAL이라는 독특한 계층이 존재해 모든 하드웨어
조절은 이를 통해 수행하게 된다. 즉 응용 프로그램이 하드웨어에 접근하기
위해서는 커널을 거쳐 HAL을 통해 하드웨어를 사용해야 한다. 윈도95에는
기본적으로 HAL이 존재하지 않고 커널을 통해 직접 하드웨어를 접근하거나
VxD와 같은 드라이버를 통해 하드웨어를 직접 조절한다. 이 둘 사이에는 서
로의 장단점이 있지만 기본적으로 HAL을 이용한 하드웨어 접근 방법이 가장
안정적이며 훨씬 효과적이다. HAL을 이용할 경우 응용 프로그램에서 직접적
으로 하드웨어를 조절하지 않기 때문에 시스템이 다운되어 먹통이 되는 경
우가 거의 발생하지 않는다. 하지만 윈도95와 같이 응용 프로그램에서 하드
웨어를 제조업체마다 다른 방식으로 직접 제어하는 경우 시스템이 다운되는
현상이 매우 심하게 나타난다. 하지만 윈도NT에서는 이런 프로그램이 작동
하지 않으며 반드시 HAL을 이용해야 하기 때문에 시스템이 다운되는 현상은
극히 드물다. 윈도는 3.1시절부터 그래픽 처리 시 GDI라는 함수를 이용했
다. GDI는 응용 프로그램에서 요청한 그래픽 데이터를 윈도 커널에 전달해
주는 것으로 이 커널은 다시 그래픽 메모리를 액세스한다. 과거 도스상에서
게임을 제작할 경우 비디오 메모리에 직접 접근해 데이터를 처리하지만 윈
도에서 이러한 방법은 금기였다. 또한 윈도에서 GDI를 이용한 비디오 메모
리 접근 방식은 속도가 무척 느리기 때문에 게임에서 필요로 하는 빠른 데
이터 처리를 수행할 수 없었다. 이런 문제를 개선한 DirectX로 게임 제작자
들이 요구하는 수준의 빠른 그래픽 데이터 처리가 가능해졌다. DirectX는
윈도NT와 비슷한 형태의 HAL을 사용해 하드웨어를 액세스한다. 하지만 Dire
ctX에서 사용하는 HAL은 윈도95에 기본으로 들어 있는 규격은 아니고 Direc
tX를 설치해야만 다른 게임이나 응용 프로그램에서 사용할 수 있다. 만일 D
irect3D와 같이 일부 신형 그래픽 카드에서만 지원할 경우 일반 2D 카드에
서는 소프트웨어를 이용해 에뮬레이트한다.


DirectX 의 역사
 
 
(1) WinG SDK

윈도95의 베타 버전이 배포될 때쯤 마이크로소프트는 WinG SDK를 개발자들
에게 배포했다. WinG SDK는 2D 기반인 비트맵 처리를 개선해 윈도에서 그래
픽 성능을 향상 시키고자 했다. 하지만 윈도 기반에서 그래픽 부분의 향상
만 있었기 때문에 대다수의 게임 개발자들은 도스 환경의 개발에 주력하고
있었다. 사실 WinG SDK는 윈도용 게임을 위한 API라기 보다는 앞으로의 발
전 방향을 제시해 주는데 불과하였다.

 
(2) DirectX 1.0 / 2.0

첫 DirectX의 등장은 95년 9월 발표된 윈도95에 'Game SDK'란 이름으로 포
함되어 있었다. 마이크로소프트는 이를 고속이고 기초적인 그래픽 기능, 여
러 가지 소리를 동시에 재생할 수 있는 사운드 기능, 프로토콜에 의존하지
않는 통신 기능 등 게임에 필요한 기능들을 포함했다고 발표하였다.

 
(3) DirectX 3.0

DirectX가 보편적인 윈도용 API로 자리 잡게 한 가장 결정적인 버전이라 할
수 있다. 많은 게임 제작자들이 게임 제작에 있어 DirectX를 사용하게 되었
고 윈도95 뿐 아니라 NT에서도 서비스팩3를 인스톨 하는 것만으로 거의 같
은 기능이 지원되기 시작하였다. 이때부터 DirectX는 윈도의 추가 기능이라
기보다는 표준 환경이 되기 시작하였다.

 
(4) DirectX 4.0

기능의 대부분이 DirectX 5에 흡수되었기 때문에 계획만으로 끝나고 발표되
지는 않았다.

 
(5) DirectX 5.0

기존의 DirectX3의 기능에 고속 3D 그래픽 기능과 3차원 사운드, 입력 장치
의 반응을 지원하도록 추가하였다.
DirectX 5.0부터는 한글 버전이 선보이기 시작하였다.

 
(6) DirectX 6.0

버전 5.0과 비교하여 3-D 어플리케이션에서 60%의 성능 향상을 보이며 AMD
의 3DNow 확장 명령 셋을 지원하여 비 인텔 계열 칩 사용 시스템에서 성능
을 더욱 향상 시킬 수 있게 하였다.
DirectX6의 큰 특징은 다음 3가지로 압축된다.
        DirectX3D의 성능 개선
        Direct3D나 DirectDraw 등의 새로운 기능 추가
        Runtime의 크기 축소
Direct3D의 개선이 DirectX6의 가장 큰 개선점이라고 할 수 있다. DirectX6
에서는 하드웨어의 비호환성이 게임에서 문제가 발생하지 않도록 많은 노력
을 들이고 있다. Direct3D에서는 개발 단계에서 하드웨어 메이커와 소프트
웨어 메이커와 협의해, 필요한 3D API가 결정됐다.종래의 Direct3D에서 개
발자는 Direct3D가 지원하지 않는 3D기능을 지원하거나, 동작속도를 높이기
위해 비디오 칩 별로 게임을 개발할 것이지, 부두 등의 특정 기능을 갖는
비디오 칩 전용으로 프로그래밍해야 했다.
DirectX6에서는 필요로 하는 3D API를 마이크로소프트와 하드웨어 벤더가
협의해 결정했다. 그 결과, 각 3D API를 소프트웨어 에뮬레이션이 아닌, 하
드웨어 가속을 기반으로 구성하는 것이 가능하게 되었다. 또 비디오 칩이
지원하지 않는 3D API에 대해서는 Direct3D 쪽이 표준 소프트웨어 라스터라
이더(소프트웨어 렌더러)를 제공하고 있다. 이에 따라 비디오 칩이 지원하
지 않는 3D 펑션의 대부분이 DirectX6 드라이버를 설치하는 것으로 표시할
수 있게 되었다.
DirectX6 의 Direct3D에서 추가된 새로운 기술요소를 살펴보면,
        멀티텍스처
        새로운 라스트라이더
        지오메트리 파이프라인 피처
        Draw Primitives3 DDI
        텍스처 메모리매니저
        플렉시블 정점포맷
        정점버퍼
        범프맵핑(bump mapping)
        표준의 고정 레이트텍스처 압축
        스텐실프레임
        W버퍼링
        Z버퍼 제거
그 중에서도 멀티텍스처, 범프맵핑, 세비지3D가 가속에 적용한 텍스처압축
등이 이후 3D게임 등에서 시도되고 있는 기술이다. 게다가 게임에 따라서는
3D 그래픽 표시가 비교도 안될 정도로 자연스러워진 것도 많다. 또 DirectD
raw는 새로이 풀 스크린에서의 채널마다 감마제어, 그리고 하드웨어 넌 인
터페이스 지원, 그리고 텍스처 표면의 재생시간 단축이 가능하게 되었다.
파일크기도 종래의 것에 비해 작아지고, 드라이버 없이 7.2MB(DirectX5.2)
에서 5.1MB로 감소했다.


(7) DirectX 6.1

이 버전에는 펜티엄III의 SSE로 불리는 3D 명령어를 지원한다. Midi hardwa
re의 지원은 DirectX 6.0에서 지원하기로 약속되어있었으나 6.1에 와서야
지원하게 되었다. DirectX 6.1 API는 Roland에서 라이선스한 사운드Canvas
General MIDI 사운드 set과 DLS(downloadable 사운드s) Wavetable synthesi
s format과 반향음 처리 기술 등을 포함한다. 게임지원에 있어서는 Direct
Music이 게이머의 Play에 따라서 필요한 음을 내거나 볼륨을 직접 조절하는
것을 지원한다. 사실 이것은 처음 시도된 것은 아니고 Lucas Arts가 이전에
Star Wars게임에서 해냈던 것이나 범용 API로는 DirectMusic이 처음이다.


(8) DirectX 7.0

다음은 DirectX 7.0의 특징들을 정리한 것이다.

        Direct3D의 달라진 점
DirectX의 많은 변화들은 주로 Direct3D의 성능향상에 관련된 것들이다. 특
히 텍스처 다운로드 성능 향상에 주안점을 두고 있으며 텍스처 관리(textur
e management)를 획기적으로 향상시킬 예정이다. 또한 Direct3D(또한 Direc
tX)가 좀더 매끄럽게 작동하도록 하는데 많은 노력을 들이고 있다.

        DirectX 7.0의 가장 주요한 특성 2가지는 광원효과의 하드웨어 가속과
변환 및 확장성(extensions)이다.

        현재 DirectX 모드 사용 시 대부분의 렌더링 작업은 그래픽 가속기
가 처리하고 있다. 하지만 기하학적인 광원과 변환은 여전히 CPU에서 처리
하고 있다. 개발자에 따르면 DirectX 7.0의 가장 큰 장점은 변환 효과를 그
래픽 가속기에서 직접 지원하는 점이다. '메시아'같은 게임은 32가지 이상
의 광원을 사용하는데 비해 지금까지 나온 하드웨어에서 지원하는 광원은 8
가지 이하로 제한되어있다. 하지만 Vertex 변환을 이용하면 엄청난 효과를
얻을 수 있다. 단, 그래픽 카드에서 시스템으로 데이터를 보내는 과정에서
부하가 걸릴 가능성이 높아진다.

        사운드 지원 변화
오디오에 관한 가장 큰 변화는 6.1버전에서 선보였던 Direct뮤직(DirectMus
ic)을 포함하는 점이다. DirectX에 포함된 소프트웨어 신서사이저는 롤랜드
사운드 캔버스의 허가를 받고 사용하는 것이다. 소프트웨어 신서사이저로서
는 비교적 CPU를 적게 사용하며, DLS 1(downloadable samples; 다운로드 받
을 수 있는 샘플들)을 지원한다. 비록 CPU를 사용하긴 하지만 이는 게임 개
발자들에게 매우 다양한 사운드 샘플을 제공한다. DLS 2는 앞으로 출시될
대부분의 PCI 사운드 카드에서 완벽하게 지원할 것이다. DLS 2는 단지 오디
오 샘플 파일을 받기만 하면 되므로 미디(MIDI)를 통해 만들어지는 효과음
에도 많은 도움을 줄 수 있다. 특히 바람소리나 물소리처럼 연속적인 효과
음의 경우 매우 이상적이다. 미디 하드웨어는 최근 몇 년 동안 엄청난 향상
을 가져왔지만 FM 사운Draw는 별로 인정 받지 못했던 시절이 있었다. 이 때
문에 지금도 게임 개발자들은 미디를 반가워 하지 않고 있다. 하지만 요즘
대부분의 게임을 차지하는 것이 사운드와 관련된 데이터라는 점을 감안하면
새로운 기술로 인해 용량이 줄어들 수 있다.


(9) DirectX 8.0

DirectX 8 에는 Fahrenheit라는 형태로 고안되고 있는 하이 엔드 3D 그래픽
API가 포함돼 본격적으로 사용된다. Fahrenheit의 본격적인 도입으로 윈도
머신에서 하이 엔드 그래픽 웍스테이션 수준의 그래픽을 쉽게 사용할 수 있
을 예정이다.

1. 그래픽
* DirectDraw와 Direct3D를 하나로 합친다.
* API가 더 추상화 되어진다.
* Programmable shader(vertex, pixel shaders)라는 3D부분의 발전
* Anti-aliasing API가 생겨난다. 그래서 3dfx의 T-buffer anti-aliasing
  이 소프트웨어적으로 on or off를 할 수 있다.
* non triangle-based 3D primitives(예 patches)의 하드웨어 가속 support

2. 사운드
* DirectSound와 DirectMusic의 통합 그래서 DirectMusic이 어느 오디오
  시스템을 위한 오디오 API로 쓰여질 수가 있다.
* DLS2(downloadable samples)를 통한 사운드 Effects
* wav와 mid가 mix될 때 synchronization과 mixing이 잘됨
* Audio Scripting를 지원
* Creative Labs' EAX reverb 기술이 DirectX Audio로 포함

3. 컨트롤러
* DirectInput Mapper가 생겨남

4. 멀티Play어
* Networking, Speech, Voice-Communication 강화
* Speech : 음성인식 Text-to-Speech
* Voice Communication


(10) DirectX 9.0

Fahrenheit의 하이 레벨 API : OpenGL의 완전통합



DirectX의 앞으로의 전망

DirectX 7.0 다음 버전은 당연히 DirectX 8.0이 될 것이다. DirectX 8.0은
마이크로소프트와 SGI가 공동 개발한 파렌하이트(Fahrenheit) 기술을 포함
할 것이며 이와 함께 휴렛 패커드에서 지원하는 기술도 포함될 것이다. 한
가지 염려스러운 점은 파렌하이트 기술은 CAD나 3D 모델링의 개발툴(Tool)
로는 매우 효과적이지만 게이머들에게는 불필요할지도 모른다는 것이다. Di
rectX 개발팀은 파렌하이트 기술이 게임 개발에도 유용하게 사용될 수 있도
록 연구 중에 있다.
이밖에 Direct3D의 기능을 향상시킬 특징에는 새로운 텍스처 포맷, 연속 표
면 방식, 육각형 맵 방식(환경 매핑에 훨씬 효과적이다), 상황에 따라 해상
도가 변화하는 방식 등이다. 현재 구현된 것은 아무 것도 없으며 단지 계획
일 뿐이지만 앞으로 몇 년 동안 그래픽 기술이 어떤 식으로 발전해 나갈 것
인지에 대한 예측을 가능하게 해준다.
덧붙여 DirectX 개발팀은 Direct3D를 DirectDraw,  DirectSound를 포함한 D
irectMusic, 윈속(Winsock)을 포함한 DirectPlay 등과 완벽하게 결합시키는
방안을 연구 중에 있다. 기술이 점점 더 복잡해질수록 사용은 점점 더 쉬어
져야 한다는 것이 최대의 목표이다.
마이크로소프트가 앞으로 DirectX에서 실현하려고 하는 것은 게임 CD-ROM을
PC에 넣고 별다른 조작 없이 즐길 수 있는 이상적인 환경이다. 이 환경이
실현되면 게임에서는 컨트롤러나 하드웨어의 설정, 소프트웨어의 설치 등을
사용자의 시스템에 맞는 방법으로 해준다. 그러면 CPU의 파워가 부족한 경
우는 일부 3D기능을 제한하거나, 해상도를 제한해 주어 사용자가 직접 설정
하지 않아도 자신의 시스템에 맞는 방법으로 즐길 수 있다(물론 이런 옵션
은 별도로 설정할 수 있다). 조이스틱 등의 입력 장치 버튼도 키보드에는
없는 기능(점프, 앉기, 공격 등)에 맞춰 맵핑할 수 있는 시맨틱 맵퍼 등의
기능이 계획되어 있다.
또 이후 활용이 기대되는 것이지만 게임 이외로의 DirectX 활용이다. 비즈
니스 어플리케이션에서는 DirectX를 사용한 하이 엔드 CAD나 3D어플리케이
션을 지원하기 때문에 이후 SGI의 하이 엔드3D API, 싱그래프나 OpenGL을
지원할 예정이다. 또 NT5.0 이후에는 DirectX를 사용한 하이 엔드 어플리케
이션이나 게임 등이 NT <--> 윈도 98 간에 자유롭게 사용할 수 있게 된다고
한다.
인터넷 방면에서도 Chrome Effects의 등장으로 DirectX 어플리케이션이 보
다 간단하게 웹사이트에서 사용할 수 있게 된다. Chrome Effects의 이용으
로 웹 마스터는 3D를 사용한 홈페이지 등을 자유로이 만들 수 있게 될 것이
다. 인터넷 상에서 DirectX를 사용하는 것에 의해 3D나 멀티미디어 컨텐트
의 보강이 기대된다.


DirectX 앞으로의 로드맵

가장 최근의 DirectX의 버전은 7.0a이다.

2000년 봄
DirectX8 베타버전 배포, GDI 2K 배포

2000년 여름
DirectX8 정식버전 배포

2000년 가을
DirectX8 드라이버 배포


Powered by ScribeFire.

반응형

'Tech' 카테고리의 다른 글

UltraMon  (0) 2007.11.19
s9  (0) 2007.10.23
UltraNav (Ultra Navigation)  (0) 2007.10.20
UltraEdit Macro  (0) 2007.10.10
IBM thinkpad Utiltiy/Function Key  (0) 2007.09.16
Anygate 파일 및 프린터 공유  (0) 2007.09.01