안녕하세요 도플광어입니다.
저는 주로 일리히트엔진 하나를 가지고 극한까지(분자단위까지 ^^;) 해부해보도록 하겠습니다.
그렇지만...
타엔진과의 비교하여 성능에 대한 언급은 되도록 피할예정입니다. 예를 들면 공군 조종사가 쓰는 연습기와 실제 전투기와의 성능 을 비교하는 일은 어리석은 일이라는 생각입니다.
아카데믹한 방향으로 포스팅을 진행하도록 하겠습니다. 성능을 떠나서 하나의 엔진을 끝까지 분석 해보는 것은 의미 있는 일이라고 봅니다.(그렇다고 일리히트엔진이 공부용 전용 엔진이라는 건 아닙니다. ^^ 충분히 실용적입니다.)
먼저 일리히트 엔진을 간단히 설명하자면...
The Irrlicht Engine is an open source high performance realtime 3D engine written and usable in C++. It is completely cross-platform, using D3D, OpenGL and its own software renderers.
위 설명과 같이 c++기반의 클로스 플랫폼 실시간 3디 랜더 엔진 입니다. 독일산 엔진입니다.(정확히 말하자면 원저자는 오스트리아 분입니다.)
현재 일리히트엔진은 1.7.2가 최신버전입니다만 svn 에 1.8beta 버전이 준비중에 있습니다. 오늘(2011.12.21)은 여기서 최신버전을 받아서 (rev 4020) 진행 하도록 하겠습니다.
그리고 저는 ms기술에 대한 거부감때문에 되도록 ms 기술(특히 VS2010 , DX, .Net)에 대한 언급은 피하도록 하겠습니다. 물론 제가 맞다 잘못됐다를 떠나서 다양한 방향을 추구하는 사람은 소수라도 존재해야된다는 생각입니다. 맥에서 작업을 하는것을 기본으로 하겠지만 되도록 플랫폼에 종속되는 않는 방법을 사용하도록 노력하겠습니다.
https://irrlicht.svn.sourceforge.net/svnroot/irrlicht
svn 클라이언트등를 이용해서 여기서 소스 코드를 끌어 옵니다.
( 참고로 svn 클라이언트는 svnx 를 사용했습니다. [사용법 바로 가기] )
컴파일 환경은 아래와 같습니다.
xcode 4.2.1
Max OSX 10.7.2
먼저 xcode로 'trunk/source/irrlicht/macosx/MacOSX.xcodeproj' 을 오픈합니다.
그리고 몇가지 프로잭트 설정을 해주어야 합니다.
trunk/include/irrCompileConfig.h 헤더파일에는 컴파일시 플랫폼에따라 선택적으로 컴파일 가능하도록 하는 매크로 설정을 바꿔 줄수가 있습니다.
예를 들어 DX 설정이 맥이나 리눅스에서는 적용되지 않도록 되어 있는 부분이 아래와 같이 구성되어있습니다.
엔진 기능별로 선택적으로 빼고 넣을수도 있습니다.
예를들어 _IRR_COMPILE_WITH_GUI_ 부분을 주석처리 하면 내장 유아이 관련된 부분이 컴파일되지않습니다. 외부 유아이 엔진을 사용할경우에는 이런식으로 엔진을 가볍게 다이어트 할수가 있습니다.
엔진의 모든 기능을 단위별로 묶어 놓았기 때문에 처음 엔진을 분석하실때 이것을 참고 해서 단위별로 나눠서 분석하시는것도 방법입니다.(독일사람들이 정리 정돈을 참깔끔하게 잘한다는 느낌이 드는 부분입니다.)
현재 맥에서 컴파일 하려면 몇가지를 수정하고 하셔야합니다.
1. 프레임버퍼 비활성화
COpenglExtensionHandler.h 헤더 파일에 위와 같이 #undef GL_ARB_framebuffer_object 추가 해줍니다. 그렇지않으면 프레임 버퍼 관련한 함수들이 정의가 되지않았다고 에러가 나옵니다.
포럼에서 이 문제를 물어보니 이 부분 담당하시는 분이 자기는 엑스코드3 쓰는데 너도 그거 써라 이렇게 말씀을 하시더군요^^;
2. MACOSX 64비트 문제
COpenglExtensionHandler.h 의 2325줄을 아래와같이 size_t로 타입 캐스팅해줍니다.
COpenGLMatrialRenderer.cpp 의 내용을 아래와 같이 수정해줍니다.
3. 가상키 선언 주석처리
CirrDeviceMacOSX.mm 파일에서 virtual keybord를 열거형으로 선언되어있는것들을 모두 주석 처리합니다. 10.7 sdk 부터는 똑같은 이름으로 내부프레임워크에 들어가있기 때문에 이름이 서로 충돌하게 됩니다.
4. 빌드 세팅
Architectures -> Standard
Base SDK-> Latest MacOSX
Build Options->Compiler for c/c++/object-c-> LLVM GCC4.2
libirrlicht.a 선택을 하고 빌드를 합니다.
컴파일이 성공적이라면 결과파일인 libirrlicht.a는 MacOSX/build/debug에 위치합니다.
다음부터는 본격적으로 하나하니씩 기능별로 분석을 해나가도록 하겠습니다.
ps.
wondows의 경우는 source/ 에있는 .sln 프로잭트를 열어서 vs를 이용해서 컴파일하면 별문제 없이 컴파일이 됩니다. 이건 별다른 설명 필요없이 간단합니다. 좀 허무 하죠 ㅡ.ㅡ? 그랬다면 죄송합니다.
반응형
'프로그래밍' 카테고리의 다른 글
캐릭터 에니메이션 관련 논문 분석 1 (15) | 2011.12.25 |
---|---|
싸우자 파인만, 수도꼭지 물줄기 (24) | 2011.12.23 |
외곽선 렌더링 구현에 관한 허접한 정리 (22) | 2011.12.21 |
울트라에디트만으로 해킹이 되는 게임?! (12) | 2011.12.17 |
게임 출시전 개발자가 갖춰야할 마음가짐 (16) | 2011.12.16 |