OpenGL

OpenGL은 Windows NT 기반 하에서 그래픽 카드를 직접 제어하는 표준 인터페이스를 의미한다. 미국
실리콘그래픽스(Silicon Graphics)사의 기술을 발전시켜 업계의 표준이 된 그래픽에 관한 기술이다.
다양한 워크스테이션을 지원하고 특수한 하드웨어를 사용하면 매우 빠른 속도를 보여 기계구조,건축분야의 CAD 및 애니메이션, 모의실험에 널리 채용되고 있다. 80년대 실리콘그래픽스 자사의
이리스 웍스테이션에 사용되던 이리스 GL(IRIS GL)이 명성을 얻게 되자 이를 다른 회사의 제품에도
적용시키기 위해서 1992년 개발한 것이다.

윈도우 98/95에서의 Direct-X보다 훨씬 포괄적인 개념을 담고 있으며, 3D지원에 있어서도 향상된
알고리즘을 제공하므로, 향후 Direct-X를 대체할 것이라는 평가를 받고 있다. 현재로서는 OpenGL에
대한 그래픽 카드 제조업체의 지원은 상당히 미약한 수준으로서 OpenGL을 지원하는 제품들은 거의
프로토 타입의 시제품 수준에 그치고 있는 형편이다. 최근 윈도우 98/95에서 OpenGL을 사용하려는
노력이 이루어지고 있으며, AGP 버스의 보급과 함께 기대되는 기술이다.

SGI, MS, IBM, HP, 인텔, 컴팩 등이 참여하고 있는 OpenGL ARB(Architecture Review Board)에서
주기적으로 표준을 개정하고 있다. 1999년 OpenGL은 1.2까지 개정되어 있다. 사용되는 운영체제로는
유닉스, 윈도우 9x, 윈도우 NT, 맥 OS, 리눅스, OS/2 등이다.그래픽 어플리케이션 용도에 맞게 특화된
OpenGL의 상위 라이브러리가 있는데, 다음과 같다.

① Open Inventor: 3D 그래픽 어플리케이션을 위한 객체 지향형 도구로서, 3D 데이터 교환을 위한
형식을 지원한다.
② IRIS Performer: 실시간 비주얼 시뮬레이션을 위한 그래픽 라이브러리로서 SGI 시스템에서
React와 함께 사용된다.
③ OpenGL Optimizer 는 CAD처럼 대규모의 데이터를 처리하여 영상으로 보여줄 때 사용되는 도구와 기능을 제공한다.
④ OpenGL Volumizer는 병원의 MRI 및 CT 영상과 같이 체적에 대한 큰 영상을 처리할 때 사용되는 기능과 도구들의 집합이다.

Direct3D

마이크로소프트사가 만든 게임 전용 API로, 가장 보편적으로 많은 게임업체에서 이를 지원하고 있다. Direct3D는 Direct-X 컴포넌트 중 하나로 다양한 3D 효과를 게임에서 구현하는 역할을 한다.

Direct3D의 주요 장점은 속도이다. Direct3D의 전체 API와 그 드라이버들은 인텔
MMX 아키텍쳐, 인텔 스트리밍 단일 명령 다중 데이터(Intel Streaming Single-Instruction
Multiple-Data, SIMD) 확장(SSE) 과 AMD 3DNow 아키텍쳐를 지원하는 등 상당히
최적화되어 있다. 뿐만 아니라, DirectX는 이제 마이크로소프트 Windows에 기본적으로 포함되어 있어 별도 설치가 필요 없을 뿐 아니라, 각 그래픽 카드 제조사들이 우선적으로 지원하고 있다.

 

 

▶ DirectX 란?
다이렉트X는 기존의 그래픽카드만을 위한 규격인 DCI(Display Control Interface)의 단점을 보완하여, 그래픽카드/사운드카드/입출력장치 등의 주요 주변기기를 응용 프로그램이 직접 제어할 수 있게 인텔과 마이크로소프트가 제정한 종합 가속표준입니다. 윈도우가 대부분의 컴퓨터에서 사용되면서 게임도 윈도우용으로 제작되고 있습니다. 하지만, 초기에 제작된 대부분의 게임은 윈도우3.1에서 사용된 WinG라는 게임 라이브러리를 사용하여 제작되었습니다. 그런데 WinG라는 것으로는 화려하고 박진감 넘치는 게임을 제작하기에는 한계가 있습니다. 즉, 대부분의게임에서 많이 필요로 하는 빠른 화면 전개가 불가능하다는 단점이 있습니다. 도스용 게임의 경우 게임 자체가 시스템의 하드웨어를 제어하기 때문에 좀더 빠르고 박진감있게 제작할 수 있었지만, 윈도우에서는 윈도우가 자체적으로 시스템을 관리하므로 응용 소프트웨어의 하드웨어 접근을 불허하기 때문입니다.
따라서 하드웨어를 직접 제어할 수 없는 WinG로는 도스용 게임만큼의 제작이 불가능하다는 한계가 있습니다. 마이크로소프트사는 게임이 컴퓨터에서 차지하는 비중이 매우 크다는 것을 잘 알고 있기 때문에, 윈도우 사용자를 늘리기 위해 정책적으로 윈도우에서 직접적으로 하드웨어를 제어할 수 있게 해주는 라이브러리를 만들려고 노력했습니다. 그러한 노력 끝에 탄생한 것이 바로 다이렉트X 1.0입니다. 다이렉트X는 사용자들의 시스템이 발전함에 따라 계속 버전 업이 이루지고 있습니다.


▶ DirectX 규격
다이렉트X는 마이크로소프트가 윈도우상에서 멀티미디어 환경을 구현하기 위해서 제안한 소프트웨어 처리 규격이며, 프로그래머와 사용자가 응용 프로그램을 작동시키기 위한 API(Application Programmer Interface)규격입니다. 하드웨어적인 처리 규정은 주변장치 제조업체에게 맡깁니다.

1) DirectDraw

다이렉트 드로우는 2D(평면 그래픽)를 담당하는 라이브러리로 선/점/면과 같은 도형의 표현은 물론, 더블 버퍼링, 컬러마스킹 & 컬러필터링, 스프라이트, 늘리기, 윈도우 등에 대한 각종 고급함수에 대한 통일된 규격입니다. 주로 2D로 제작된 게임에 사용됩니다. 다이렉트 드로우는 비디오 카드의 메모리를 직접 조작하거나 하드에어적인 비트블릿(Bitblit)을 수행하고 오버레이와 페이지 플리핑 같은 기능을 프로그램이 직접 실행할 수 있게 해 줍니다. 결과적으로 더 나은 성능의 그래픽 가속 기능을 얻을 수 있습니다. 쉽게 말해서 게임이나 고속으로 하드웨어를 제어하기 위한 개발툴 또는 라이브러리라고 생각하면 된다.

2) Direct3D

다이렉트 3D는 3차원 그래픽에 사용되는 라이브러리로 렌더링/쉐이딩/텍스처링/3차원 변환/필터링 등에 관한 각종 규격을 담고 있습니다. 3D 그래픽 카드는 다이렉트 3D를 직접 지원하여 더 빠르고 멋진 그래픽을 보여줍니다. 특히 전용 그래픽 3D 하드에어가 없어도 소프트웨어적으로 3D을 강화시켜 줍니다. 물론 3D 그래픽 하드웨어가 있으면 최적의 기능을 발휘할 수 있습니다.

3) DirectVideo

인텔의 AVI 파일 포맷을 기반으로 하는 동영상 처리에 관한 통합규격입니다. AVI 이외에도 MPEG 동영상 포맷을 윈도우에서 처리하기 위한 규격도 포함하고 있습니다.

4) DirectSound

다이렉트 사운드는 사운드 부분을 담당하는 라이브러리로 사운드카드의 직접 제어를 위한 규격입니다. 웨이브 테이블 미디와 9채널의 wave 믹서로 구성되어 있으며, CD 수준의 음질인 44.1KHz까지 지원합니다. 기존의 윈도우에서는 wave 방식으로는 한 번에 한 개의 소리밖에 출력할 수 없지만, 웨이브 테이블 미디와 wave방식의 음성을 동시에 출력할 수 있습니다. 다이렉트 사운드는 사운드 카드의 버퍼와 직접 데이터를 주고 받음으로써 사운드 카드의 사운드 채널을 직접 제어합니다. 따라서, 고음질이면서도 지연이 거의 없는 사운드와 믹싱 기능을 제공하며 윈도우용 게임에서 현실감 있는 사운드를 재생해 냅니다.

5) DirectInput

입출력 장치의 제어를 위한 규격으로, 주로 조이스틱/게임패드에 대한 입력 규격입니다. 상대포인터/절대포인터/상대변위포인터 등에 대한 통합규격입니다. 느린 속도로 작동하는 입출력 장치들을 안정적으로 사용하기 위해 개발되었습니다. 2차원 입력장치인 마우스는 물론 각종 3차원 입력장치에 대한 응용도 가능하도록 되어 있습니다.

6) DirectPlay

다이렉트 플레이는 네트웨크에서 여러 사용자가 동시에 게임을 할 수 있도록 만들어진 것입니다. 다이렉트 플레이 객체와 다이렉트 플레이 서버로 구성됩니다. 다이렉트 플레이 객체의 통신 대상은 게임이고, 다이렉트 플레이 서버가 모뎀이나 랜의 네트워크 연결을 담당합니다. 다이렉트 플레이는 단일 인터페이스를 제공함으로써 네트워크 게임 제작사가 네트워크 관련 부분을 개발할 필요가 없도록 만들었습니다.

'참고자료' 카테고리의 다른 글

OSI 7계층  (0) 2010.08.17
세션아이디  (0) 2010.08.15
HTTP 상태 코드 목록  (0) 2010.08.15
GNU 정의  (0) 2010.08.05
리눅스 mdsn  (0) 2010.07.05

+ Recent posts