티스토리 뷰

Application/C/C++

D3d와 OpenGL은 3차원 엔진이 아니다.

알 수 없는 사용자 1998. 12. 28. 16:57

** 3차원 엔진 **
copyrightⓒ 김성완(찐빵귀신) [1998년 12월 28일]

2. D3d와 OpenGL은 3차원 엔진이 아니다.


3차원 하드웨어 가속을 인터페이스 해주는 대표적인 두개의 API가 바로 D3d와 OpenGL 이죠..

그런데 대개 초보들의 경우 이들 API를 사용하려면 모두다 이들 API만 사용해야하는 걸로 생각합니다.
하지만 실용적인 견지에서 보면 단지 폴리곤 rasterization 부분만 사용하면 그만입니다.

Direct3d와 OpenGl은 일반적인 의미의 3차원 엔진이 아니라 단지 하드웨어 가속기능을 동일한 인터페이스로 처리해주는 API라는걸 잊지마십시오.
3차원 가속기 없이 사용하는 것은 어디까지나 공부하기 위한 목적이지 실제 어플리케이션에서 사용하는 것은 개념없는 짓입니다.

그러므로 소프트웨어 3차원 엔진이 필요하면 퀘이크나 언리얼 엔진을 라이센스 하거나 직접 개발해야합니다.
Direct3d나 OpenGL은 3차원 가속기능의 표준적인 API이지, 일반적인 소프트웨어 3차원 엔진의 대체물이 아닙니다.
그리고 게임이 제대로된 완전제품이 되려면 일단 소프트웨어 엔진이 있어야 합니다.

소프트웨어 엔진은 단지 폴리곤 레스터라이즈만 소프트웨어로만 처리하는게 아니라, 그것보다 더 중요한 HSR(Hidden Surface Removal)을 담당하는 중요한 기능을 합니다.
당연한 얘기지만 하드웨어 가속기들도 HSR은 Z-Buffering외에는 전혀 지원하지 않습니다.
즉, BSP나 Portal등은 결국 소프트웨어의 몫입니다.

최근에 나온 툼레이더 3의 경우는 하드웨어 담당 기능의 대표격인 텍스츄어 필터링도 소프트웨어로 처리하더군요.(MMX이용)
그러니깐 툼레이더 2를 부두에서 돌린것보다 툼레이더 3를 소프트웨어 엔진에서 돌린 것이 더 화질이 좋습니다.
그리고 가장 이상적인 것은 기본적으로 소프트웨어 엔진이 하드웨어 가속기의 힘을 빌리지 않고도 최대한의 성능을 발휘해야합니다.

결국 퀘이크나 언리얼 엔진을 라이센스 할만한 돈이 없다면 직접 개발하는 수밖에 없습니다.
소프트웨어 엔진이 탄탄하게 갖추어져야 결국 하드웨어 가속기 상에서도 뛰어난 성능을 발휘하는 겁니다.

결론적으로 Direct3d나 OpenGL은 하드웨어 가속기능을 표준적으로 사용하기 위한 인터페이스지 결코 일반적인 목적의 3차원 엔진은 아닙니다.
물론 소프트웨 엔진은 320*200의 저해상도 모드만 지원하기로 한다면 사용할 수도 있지만..
요즘 처럼 이런 시대에 그런 저해상도를 유저들이 좋아할리 없겠죠.