2강이라고 하기엔...준비가 좀 부족했습니다.
요즘에 갑자기 학교 특강을 맡아버리는 바람에 아무정신없이 어느덧 2주가 훌쩍 지나 버렸네요. ㅜ.ㅜ;
매월 6일과 21일에 글을 올리기로 되었는데 처음부터 쉽지않네요. 다소 준비가 부족한 면이 있어도 양해 부탁드립니다. 다음부터는 꼭 스캐쥴을 배분을 잘해 두도록하겠습니다.
전체 구조요약
일리히트엔진구조를 전체적으로 요약하자면 일단 네임스페이스별로 irr 을 루트로 하여 그밑으로 천하는 중원의 조조가 다스리는 core, 서촉의 유비가 다스리는 video, 강동의 손책이 다스리는 scene, 북방의 원소가 있는 gui, 남만맹획 의 io 5개의 나라로 나누어져있습니다.(그냥 농담으로 비유한것이니 넘 심려치 마시길...)
암튼 중요한것은 크게 5개로 나누어진다는것입니다.
irr
|
+--core
+--video
+--scene
+--gui
+--io
irr 루트에는 가장 중요한 디바이스(
일리히트엔진의 디바이스란 랜더링디바이스를 추상화 한것이 아니라 시스템 전체(os 포함)를 추상화 한것입니다. 랜더링 디바이스(비디오카드 같은...)는 video 네임스페이스로 따로 나뉘어져있습니다.
device는 전체 시스템을 추상화 한것입니다, 달리 말하면 가상의 기계라고 보셔도 됩니다. 이것을 보고 예전에 어떤분이 프레임웍이 내장된 엔진이라고 평을 하던데 전 개인적으로는 플랫폼이 내장된엔진이라는 표현이 더 맞을거같다는 생각이 들더군요.
디바이스에 종속적인 부분은 바로 이부분에서 모두 다뤄지게됩니다. 예를 들어 안드로이드 상에서 일리히트엔진을 돌리고싶다면 안드로이드용 디바이스를 irr::IrrlichtDevice 에서 상속받아 만들어주면됩니다. 나머지 네임스페이스로 나누어진 부분들은 모두 코드 수정할 필요가 전혀없습니다.
이름 그대로 중심의 core에 나머지 네개가 모두 종속 되어져있습니다. 반데로 말하면 core는 나머지 4개가 어떻게 바뀌던 상관없지만 core가 수정이 되면 나머지 네게 모두 영향을 받게 됩니다.(사실 그런 부분만 따로 떼어 놓은것이 core 입니다.)
core의 내용물은 벡터,행렬등의 수학관련 클래스와 array,map,string등의 컨네이너클래스들 입니다. 예전에 이 부분만 따로 떼어서 겜브리오 엔진에 붙여서 사용한적도 있을 정도로 정리가 아주 잘되어있습니다.
만약 일리히트엔진을 다른언어등으로 포팅하려할때도 이 부분을 먼저 포팅하는것이 순서일것입니다.
io 는 코어의 컨테이너 부분을 사용합니다. 주로하는 역활은 파일처리와 더불어 항상성 유지 관리 기능을합니다. 엔진의 현재 모든 상태(씬트리, 메트리얼)를 그대로 xml로 직렬화해서 내보낼수있으며 반대로 읽어 들일수도있습니다.
video 는 core 의 수학클래스와 컨테이너를 사용하며 또 io의 파일처리 부분을 사용합니다. video국의 주력 군대는 dx, opengl 같은 랜더러를 추상화 합니다.
scene,gui는 둘다 video에 종속되어있습니다. 자세한 내용은 두나라를 정벌할때 다시 이야기 하도록 하겠습니다.
이번에는 여기서 마칠까합니다.
ps.
다음회 부터는 본격적으로 5나라를 하나씩 정복하겠습니다.
새해 복 많이 받으시고 모두다 천하통일의 대업을 이루시길기원합니다.
모두들 천하통일하는 동안 그럼 소는 제가 키우겠습니다.
요즘에 갑자기 학교 특강을 맡아버리는 바람에 아무정신없이 어느덧 2주가 훌쩍 지나 버렸네요. ㅜ.ㅜ;
매월 6일과 21일에 글을 올리기로 되었는데 처음부터 쉽지않네요. 다소 준비가 부족한 면이 있어도 양해 부탁드립니다. 다음부터는 꼭 스캐쥴을 배분을 잘해 두도록하겠습니다.
전체 구조요약
일리히트엔진구조를 전체적으로 요약하자면 일단 네임스페이스별로 irr 을 루트로 하여 그밑으로 천하는 중원의 조조가 다스리는 core, 서촉의 유비가 다스리는 video, 강동의 손책이 다스리는 scene, 북방의 원소가 있는 gui, 남만맹획 의 io 5개의 나라로 나누어져있습니다.(그냥 농담으로 비유한것이니 넘 심려치 마시길...)
암튼 중요한것은 크게 5개로 나누어진다는것입니다.
irr
|
+--core
+--video
+--scene
+--gui
+--io
irr 루트에는 가장 중요한 디바이스(
irr::IrrlichtDevice
) 객체가 있습니다.일리히트엔진의 디바이스란 랜더링디바이스를 추상화 한것이 아니라 시스템 전체(os 포함)를 추상화 한것입니다. 랜더링 디바이스(비디오카드 같은...)는 video 네임스페이스로 따로 나뉘어져있습니다.
device는 전체 시스템을 추상화 한것입니다, 달리 말하면 가상의 기계라고 보셔도 됩니다. 이것을 보고 예전에 어떤분이 프레임웍이 내장된 엔진이라고 평을 하던데 전 개인적으로는 플랫폼이 내장된엔진이라는 표현이 더 맞을거같다는 생각이 들더군요.
디바이스에 종속적인 부분은 바로 이부분에서 모두 다뤄지게됩니다. 예를 들어 안드로이드 상에서 일리히트엔진을 돌리고싶다면 안드로이드용 디바이스를 irr::IrrlichtDevice 에서 상속받아 만들어주면됩니다. 나머지 네임스페이스로 나누어진 부분들은 모두 코드 수정할 필요가 전혀없습니다.
이름 그대로 중심의 core에 나머지 네개가 모두 종속 되어져있습니다. 반데로 말하면 core는 나머지 4개가 어떻게 바뀌던 상관없지만 core가 수정이 되면 나머지 네게 모두 영향을 받게 됩니다.(사실 그런 부분만 따로 떼어 놓은것이 core 입니다.)
core의 내용물은 벡터,행렬등의 수학관련 클래스와 array,map,string등의 컨네이너클래스들 입니다. 예전에 이 부분만 따로 떼어서 겜브리오 엔진에 붙여서 사용한적도 있을 정도로 정리가 아주 잘되어있습니다.
만약 일리히트엔진을 다른언어등으로 포팅하려할때도 이 부분을 먼저 포팅하는것이 순서일것입니다.
io 는 코어의 컨테이너 부분을 사용합니다. 주로하는 역활은 파일처리와 더불어 항상성 유지 관리 기능을합니다. 엔진의 현재 모든 상태(씬트리, 메트리얼)를 그대로 xml로 직렬화해서 내보낼수있으며 반대로 읽어 들일수도있습니다.
video 는 core 의 수학클래스와 컨테이너를 사용하며 또 io의 파일처리 부분을 사용합니다. video국의 주력 군대는 dx, opengl 같은 랜더러를 추상화 합니다.
scene,gui는 둘다 video에 종속되어있습니다. 자세한 내용은 두나라를 정벌할때 다시 이야기 하도록 하겠습니다.
이번에는 여기서 마칠까합니다.
ps.
다음회 부터는 본격적으로 5나라를 하나씩 정복하겠습니다.
새해 복 많이 받으시고 모두다 천하통일의 대업을 이루시길기원합니다.
모두들 천하통일하는 동안 그럼 소는 제가 키우겠습니다.
반응형
'프로그래밍' 카테고리의 다른 글
실전에서 알아보는 홀펀칭 방법. (45) | 2012.01.09 |
---|---|
Unicode 사용하기 (18) | 2012.01.06 |
Google Performance Tools - TCmalloc (Thread-Caching memory allocation) (8) | 2012.01.05 |
네트워크 게임 튜터리얼 1 - 워밍업 (40) | 2012.01.04 |
Fast RTTI ( Run-Time Type Infomation ) (35) | 2012.01.03 |