'Irrlicht Engine'에 해당되는 글 4건

  1. 2011.03.17 Mac + Irrlicht + Eclipse CDT(이클립스로 맥에서 일리히트엔진 사용하기)
  2. 2010.06.06 일리히트엔진 강좌(irrlicht 강좌) 1
  3. 2010.02.28 iPhone에 irrlicht engine 올리기 9
  4. 2010.01.03 굴절데모입니다.(소스포함)

Mac + Irrlicht + Eclipse CDT(이클립스로 맥에서 일리히트엔진 사용하기)

|
맥에서 주로 사용하는 엑스 코드는 자체적으로 따로 컴파일러를 가지고있는것이 아니라 내부적으로 gcc를 호출하여주면 통합 개발환경입니다. 
여기서 한가지 많이 분들이 착각하시는것이 gcc입니다.
원래는 Gnu C Compiler의 약자였다고합니다.
그것이 Gnu Compiler Collection 으로 되어서 여러가지 언어를 통합적으로 컴파일할수있는 툴이되었습니다.
실제로 오브잭트씨로 따로 컴파일러가 있는것이아니라 gcc에서 모두 통합되어 컴파일이됩니다.
그리고 이들 서로 다른 언어들은 오브잭트코드상에서 모두 호환이 됩니다. 

그래서 오브잭트씨로 클래스나 함수를 만든것을 씨나 씨뿔뿔에서 호출하여 쓸수있는것입니다. 

먼저 맥에서 컴파일러를 세팅해줘야하는데요
엑스코드를 설치만 해주면됩니다.
맥에서는 따로 gcc설치하실필요가없고 엑스코드를 설치했다면 따로 손댈게 없습니다. 되도록 최신버전의 엑스코드를 설치하실필요가있습니다. 

커멘드창을 열고 'gcc --help' 해서 다음과같이 나온다면 준비가 된 상태입니다.



그다음 이클립스를 설치합니다.
단순히 압축만 풀면 설치가 됩니다.
http://www.eclipse.org/downloads/ 
c++용 이클립스를 다운받아서 쓰시면됩니다.(eclipse CDT)

그리고 엑스코드상에서 일리히트엔진을 컴파일합니다.
커멘드창에서 make staticlib_osx 으로 컴파일성공해서 libirrlicht.a 파일이 생성은 되지만, 일리히트엔진 소스 폴더에있는 make파일은 맥용설정이 제데로안되있어서 오브잭트씨소스를 컴파일하지않고 무시해버립니다. 그부분은 나중에 시간이되면 내용을 수정해볼려고합니다.


일리히트엔진은 다행이도 소스폴더에 맥의 엑스코드용 프로잭트 파일이 포함되어있습니다.


MacOSX.xcodeproj 를 더블 클릭합니다.

 
active architecture를 x86_64로 세팅해놓습니다. 만약 이항목이 보이지 않으면 Get info 메뉴에서 다음과 같이  64-bit Intel 로 설정해놓습니다

 

64비트버전의 컴파일이므로 OpenglMatrialRenderer.cpp 파일에서 void * 형을 Gluint바꿀수없다는 에러가 나올겁니다.
모두 size_t 로 수정하여 컴파일해주면 이상없이 잘됩니다.(2011년4월10일 현재, 1.7.2 버전에서 확인)

빌드가 무시하 마치고나면 build/debug/libirrlicht.a가 생성됩니다.



여기서 얻어진 라이브러리파일(libirrlicht.a)을 가지고 이클립스에서 사용 하실수있습니다.

이클립스도 프로잭트설정에서 -framework 옵션을 사용할수있습니다.(당연한 말이지만 그옵션은 엑스코드전용옵션이 아니라 MacOSX c++ linker(ld) 옵션입니다.)
링크과정에서 코코아 프레임웍 오픈지엘 프래임웍등이 필요합니다.

이큼립스를 실행시키고 핼로월드 프로잭트를 만듭니다.


main.cpp파일을 다음과 같이 바꾼다.

//============================================================================

// Name        : test1.cpp

// Author      : 

// Version     :

// Copyright   : Your copyright notice

// Description : Hello World in C++, Ansi-style

//============================================================================

//기본 A1형

#include <irrlicht.h>

//#include <windows.h>

int main() {

irr::IrrlichtDevice *pDevice =irr::createDevice(irr::video::EDT_OPENGL);

//irr::IrrlichtDevice *pDevice;

pDevice->setWindowCaption(L"Type-A1");


irr::video::IVideoDriver *pVideo = pDevice->getVideoDriver();

irr::scene::ISceneManager *pSmgr = pDevice->getSceneManager();

irr::gui::IGUIEnvironment *pGuiEnv = pDevice->getGUIEnvironment();

pDevice->getFileSystem()->changeWorkingDirectoryTo("../../res");

pSmgr->addCameraSceneNode(0, irr::core::vector3df(0, 10, -20),

irr::core::vector3df(0, 0, 0));

//큐브 노드 만들기

{

irr::scene::ISceneNode *pNode = pSmgr->addCubeSceneNode();

pNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);

pNode->setMaterialFlag(irr::video::EMF_WIREFRAME, true);

}


//프레임 레이트 표시용 유아이

irr::gui::IGUIStaticText *pstextFPS = pGuiEnv->addStaticText(L"Frame rate",

irr::core::rect<irr::s32>(0, 0, 100, 20), true, true, 0, 100, true);

while (pDevice->run()) {

static irr::u32 uLastTick = 0;

irr::u32 uTick = pDevice->getTimer()->getTime();

irr::f32 fDelta = ((float) (uTick - uLastTick)) / 1000.f; //델타값 구하기

uLastTick = uTick;

//프레임레이트 갱신, 삼각형수 표시

// {

// wchar_t wszbuf[256];

// swprintf(wszbuf, L"Frame rate : %d\n TriAngle: %d",

// pVideo->getFPS(), pVideo->getPrimitiveCountDrawn());

// pstextFPS->setText(wszbuf);

// }

pVideo->beginScene(true, true, irr::video::SColor(255, 100, 101, 140));

pSmgr->drawAll();

pGuiEnv->drawAll();

pVideo->endScene();

}

pDevice->drop();

return 0;




그 다음 헤더파일경로를 추가해준다.
Gcc c++ Compier -> Includes


이번에는 라이브러리를 추가해준다.

MacOSX c++ linker / Libraries



마지막으로 프레임웍 옵션을 추가해줍니다.

MacOSX c++ linker -> Miscellaneous -> Linker flags 텍스트 박스에  

-framework GLUT -framework OpenGL -framework Cocoa -framework IOKit -framework Carbon

을 타이핑 해넣어줍니다.



참고로 엑스 코드상에서 다음과 같은 내용입니다.

XXX.framework 형태로 되어있는것이

이클립스상에서는 링커옵션을 직접 넣어주므로
-framework XXX
이런식으로 써주면됩니다.

framework이란 헤더와 립파일을 묶어 놓은 개념입니다.
참고로 리눅스나 윈도에서는 링커에서 framework옵션이 존재하지않습니다.




시스템/라이브러리/frameworks/  에 모아져 있습니다.
헤더파일과 라이브러리 파일이 모아진 폴더형태입니다.



컴파일이 무사히 마쳤으면 실행을 해야합니다.


그냥 바로 실행을 하면 화면상에 아무것도 나오지 않을것입니다.

Run Confiurations-> Environment 에서

new 를 해서 항목을 생성하고 
DISPLAY 0.0 이라고 설정한후 실행하면됩니다.


 
 

실행화면입니다.

ps.

참고로 맥에서 컨트롤+스페이스는 다른키로 예약이 되어있기때문에 이클립스의 자동완성 기능을 쓰실려면 아래와 같이 수정을 해줍니다.

Ecilpse->환경설정


옵션+스페이스 키로 바꾼예입니다.


-참고자료-  

http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=25355&sid=96f55fb1f9fc9649cb6270b2e2420404

이클립스로 윈도에서 일리히트 엔진사용하기
http://gamedevfan.blogspot.com/2009/10/irrlicht-engine-easy-tutorial-intro.html

윈도에서 이클립스로 아이폰어플개발하기
http://rosagigantea.tistory.com/354

동영상

http://www.youtube.com/watch?v=pA75ltC1LVU

리눅스에서 사용하기...

http://www.sensobots.de/Documentation/TUTORIAL_irrlicht_eclipse_cdt/irrlicht-cdt-linux.html

http://www.irrlicht3d.org/wiki/index.php?n=Main.UsingEclipseWithIrrlicht

맥에서 이클립스로 오픈지엘사용하기
http://dirkraffel.com/2008/01/17/eclipse-cdt-on-mac-os-x/
http://jaeyoung.tistory.com/234


맥에서 이클립스로 쿠다쓰기
http://eaglface.blogspot.com/2009/04/mac-os-xeclipse-cdt-cuda.html

Max OsX용  일리히트 프레임웍 만들기 관련 포스트
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=42601 





And

일리히트엔진 강좌(irrlicht 강좌)

|
And

iPhone에 irrlicht engine 올리기

|
문서 최종 수정일 : 2011년 5월 12일

0. 들어가기전에...

많은 분들이 아이폰어플을 개발하기 위해서 오브잭트씨만을 써야한다고 잘못알고 계신분들이 많습니다.

Xcode는 c++도 컴파일이 가능하기때문에 기존에 c++기반의 공개엔진들을 올리실수가있습니다.
오브잭트씨는 c++과 별도의 언어가 아니고 c++코드를 생성해주는 관리스크립트언어(일종에 탬플릿)라 생각을하시면됩니다.
(MS의 managed c++과 비슷?)

c++기반의 일리히트엔진(irrlicht.sourceforge.net)을 올리는 방법을 설명해보도록 하겠습니다.

1. 맥개발환경 세팅하기
아이폰에 일리히트 엔진을 올리기 위해서 먼저 xcode와 최신의 아이폰 sdk를 설치해야합니다.
Install Xcode with last iPhone SDK. ( http://developer.apple.com/iphone/ )

공개소스들은 대부분 svn을 통해서 다운받는것이 많습니다. 윈도우즈는 tortoris-svn을 사용하지만
맥에서 SVN을 사용 하려면 아래 싸이트에 가면 SVN클라이언트프로그램을 구하실수 있습니다. 
Install scplugin for your Mac to access svn. ( http://scplugin.tigris.org/ ) 

 
2. 일리히트엔진 다운받기

opengl-es버전의 일리히트엔진svn으로 다운받습니다.

 
3. 엔진 컴파일하기

일단
source/Irrlicht/MacOSX/MacOSX.xcodeproj
경로에 있는 엑스코드용 프로잭트파일은 아이폰타겟이 아닌 맥운영체제용 빌드파일입니다.
그러나 이것을 조금수정하면 아이폰용으로 쉽게만들수있습니다.(역자주. 전 이것때문에 2주삽질을 ㅜ.ㅜ;;)

 
먼저 다음 3개의 파일을 프로잭트에서 제외시킵니다. (아이폰과는 무관한 맥운영체제 부분이며 컴파일시 에러가 발생합니다.)
- AppDelegate.mm 
- CIrrDeviceMacOSX.mm 
- OSXClipboard.mm 

그 다음 아래의 파일들을 프로잭트에 추가시켜줍니다.
(당근 헤더 파일은 안추가 시켜도 되겟죠. ^^;)


- source/Irrlicht/wglext.h 
- source/Irrlicht/eglext.h 
- source/Irrlicht/gles-ext.h 
- source/Irrlicht/COGLESDriver.h 
- source/Irrlicht/COGLESDriver.cpp 
- source/Irrlicht/COGLESExtensionHandler.h 
- source/Irrlicht/COGLESExtensionHandler.cpp 
- source/Irrlicht/COGLESMaterialRenderer.h 
- source/Irrlicht/COGLESTexture.h 
- source/Irrlicht/COGLESTexture.cpp 
- source/Irrlicht/CIrrDeviceIPhone.h 
- source/Irrlicht/CIrrDeviceIPhone.cpp 
- source/Irrlicht/CIrrDeviceIPhone.m 

include/IrrCompileCongig.h 파일의 앞부분에 아래 코드를 추가해줍니다.( #include <stdio.h> 바로 밑에쯤... )

#define NO_IRR_COMPILE_WITH_WAD_ARCHIVE_LOADER_ 
#define NO_IRR_COMPILE_WITH_HALFLIFE_LOADER_ 
#define NO_IRR_COMPILE_WITH_BURNINGSVIDEO_ 
#define NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_ 
#define NO_IRR_COMPILE_WITH_OGLES2_ 

#define _IRR_COMPILE_WITH_OGLES1_ 

 


그리고 나서 마지막으로 Get Info->Base SDK for All Configurations->[현제 설정되어있는 최신 ios]
으로 설정을 해준뒤 빌드를 합니다.


 

아래의 파일이 생성됐다면 성공한것입니다.
- source/Irrlicht/MacOSX/build/Debug-iphonesimulator/irrlicht.a 
 
일단 여기까지 하시면 엔진컴파일은 완료가 됐습니다. 

4. 어플만들어보기

포럼에서 FuzzYspo0N 님이 올려주신 탬플릿을 다운받습니다.

그다음 빈폴더를 만들어 그안에  압축을 풀어넣습니다.
irrlicht.a파일도 같은 폴더에 카피해 넣습니다.

 iPhoneTemplateApp/irrlichtApplication.xcodeproj 파일로 프로잭트를 오픈합니다.

get info->irrlicht.a 에서 경로명을 카피해넣은 폴더로 새로지정해줍니다. 그러면 빨간색이 검은색으로 바뀌게 될것입니다.

get info->include 에서 일리히트엔진을 컴파일했던 include디랙토리로 지정해줍니다.

마지막으로 
Get Info->Base SDK for All Configurations->iPhone Simulator 3.x
선택해준뒤

빌드한후 실행해보실수 있습니다.



4.1 아나 토미 싸이트에서 어플 만들어 보기



5.참고자료
혹시 다운로드 링크가 깨져있을것에 대비해서 자료를 관련 자료 업로드 해둡니다.


ps.
다음 강좌에는 터치패널 컨트롤 하는 부분도 정리해서 올리겠습니다. 



=================================================================

포럼에 올라온 원문입니다.


And

굴절데모입니다.(소스포함)

|
And
prev | 1 | next