2011-01-19 4 views
4

Irrlicht를 사용하여 게임을 쓰고 있습니다. 그리고 나는 문제가있다.Irrlicht가 잘못된 경로로 파일을 찾고 있습니다.

나는 /home/m4tx/Projects/Discoverer/Discoverer/bin/Debug/에 게임을 가지고 있으며 /home/m4tx/Projects/Discoverer/Discoverer/bin/Debug/media/에 있습니다. 내가 처음으로 Irrlicht 예에서 코드를 수정했습니다 :

#include <irrlicht/irrlicht.h> 

using namespace irr; 
using namespace core; 
using namespace scene; 
using namespace video; 
using namespace io; 
using namespace gui; 

int main(int argc, char *argv[]) 
{ 
IrrlichtDevice *device = 
    createDevice(video::EDT_OPENGL, dimension2d<u32>(640, 480), 32, 
    false, false, false, 0); 

if (!device) 
    return 1; 

device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo"); 

IVideoDriver* driver = device->getVideoDriver(); 
ISceneManager* smgr = device->getSceneManager(); 
IGUIEnvironment* guienv = device->getGUIEnvironment(); 

guienv->addStaticText(L"Hello World! This is the OpenGL!", 
    rect<s32>(10,10,260,22), true); 

IAnimatedMesh* mesh = smgr->getMesh("./media/sydney.md2"); 
if (!mesh) 
{ 
    device->drop(); 
    return 1; 
} 
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh); 

if (node) 
{ 
    node->setMaterialFlag(EMF_LIGHTING, false); 
    node->setMD2Animation(scene::EMAT_STAND); 
    node->setMaterialTexture(0, driver->getTexture("./media/sydney.bmp")); 
} 

smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0)); 
while(device->run()) 
{ 
    driver->beginScene(true, true, SColor(255,100,101,140)); 

    smgr->drawAll(); 
    guienv->drawAll(); 

    driver->endScene(); 
} 

device->drop(); 

return 0; 
} 

그러나으로 Irrlicht는

가 어떻게 수리 ... 단지 /home/m4tx/에서 모델을 찾고있다?

+0

프로그램을 어떻게 불러들입니까? 시작시 작업 디렉토리는 무엇입니까? –

+0

프로그램의 작업 디렉토리는'/ home/m4tx/Projects/Discoverer/Discoverer /'이지만 모든 필수 파일에도/media/디렉토리가 있습니다. 나는 또한/home/m4tx/Projects/Discoverer/Discoverer/bin/Debug /'를 시도했지만 작동하지 않습니다 ... – m4tx

+0

왜 작동하지 않는지 모르겠습니다. Code :: Blocks 또는 Dolphin (파일 관리자)에서 시작합니다. 작동하지 않습니다. 터미널이나 bash 스크립트에서 시작하고 있는데 ... – m4tx

답변

3

작업 디렉토리를 올바르게 가져와야합니다.

코드에서 디버그 한 줄은 현재 경로를 인쇄하거나 로그하는 것입니다. 나는 보통 메인에있는 첫 줄을 넣었다.

#include <unisdt.h> 
#include <stdlib.h> 

char cwd[1024] = ""; 
getcwd(cwd, 1024); 
printf("Current path: %s\n", cwd); 

또한 대한

보기 파일 코드 블록 프로젝트에서 확인하십시오

<Option working_dir="." /> 

을 필요에 따라 변경합니다.

http://wiki.codeblocks.org/index.php?title=Project_file#Working_directory