Kümmelkorn
Aktives Mitglied
Thread Starter
- Dabei seit
- 06.10.2008
- Beiträge
- 1.941
- Reaktionspunkte
- 127
Hallo Welt!*
Ich würde mich gern ein wenig in die Irrlicht-Engine einarbeiten, aber wie das leider nicht selten der Fall ist, funktioniert erst mal wieder gar nix...
Ich habe mir die Irrlicht-Engine heruntergeladen, die Bibliothek komplimiert und mir ein Projekt eingerichtet, wie es in einer Online-Anleitung stand. Da das mitgelieferte HalloWelt-Beispiel sehr Windowsfokussiert ist, nutze ich als Quellcode eine Mischung aus eben diesem mitgelieferten HalloWelt-Beispiel und der gerade verlinkten Online-Anleitung. (Quellcode siehe unten).
Leider gibt es nach wie vor zwei Probleme:
Der von mir genutzte Quellcode sieht in der aktuellsten Version so aus:
*ok, der witz war extrem doof, musste aber mal sein
Ich würde mich gern ein wenig in die Irrlicht-Engine einarbeiten, aber wie das leider nicht selten der Fall ist, funktioniert erst mal wieder gar nix...
Ich habe mir die Irrlicht-Engine heruntergeladen, die Bibliothek komplimiert und mir ein Projekt eingerichtet, wie es in einer Online-Anleitung stand. Da das mitgelieferte HalloWelt-Beispiel sehr Windowsfokussiert ist, nutze ich als Quellcode eine Mischung aus eben diesem mitgelieferten HalloWelt-Beispiel und der gerade verlinkten Online-Anleitung. (Quellcode siehe unten).
Leider gibt es nach wie vor zwei Probleme:
- Selbst wenn ich mich auf den Kopf stelle und weine: Die Textur des Meshs wird und wird nicht geladen... jedenfalls erscheint das Mesh in weiß, genau so, als würde ich den Befehl für das Laden der Textur einfach weglassen! (Der Befehl ist unter der Zeile, die ich mit // -- PROBLEM -- markiert habe)
- Wenn ich das im HalloWelt-Beispiel genutze GUIEnviroment einsetze, verhaut es mir das komplette Beispielmesh, sodass ich gar nichts mehr sehe außer ein paar blinkenden Pixeln links oben und dem Zeugs im GUIEnviroment.
Der von mir genutzte Quellcode sieht in der aktuellsten Version so aus:
Code:
#include <OpenGL/OpenGL.h>
#include <irrlicht.h>
#include <iostream>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
/*
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#else*/
#pragma comment(lib, "libIrrlicht.a")
/*#endif*/
// resPath returns the Path for a resource file "file"
char * resPath( char** argv, char* file )
{
// returns the path to the "Resources" directory
char tempPath[1024];
strncpy( tempPath, argv[0], 1023 );
int x = strlen(tempPath) -1;
while( tempPath[x] != '/' && x > 0 )
tempPath[x--] = 0;
strncat( tempPath, "../Resources/", 1023 );
return strncat( tempPath, file, 1023 );
}
int main(int argc, char** argv)
{
// setting up the device
IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<s32>(512, 384), 16, false, false, false, 0);
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
// getting the driver and scenemanager
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
// if I include the GUI Enviroment, the sample mesh will dissapear, if a texture is loaded
//IGUIEnvironment* guienv = device->getGUIEnvironment();
//guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!", rect<s32>(10,10,200,22), true);
// loading the mesh works great
IAnimatedMesh* mesh = smgr->getMesh(resPath(argv,"sydney.md2") );
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
if (node) {
// setting the lighting to true hides the complete scene, as espected
node->setMaterialFlag(EMF_LIGHTING, false);
node->setFrameLoop(0, 310);
// -- PROBLEM --
// so here is the problem: there is no error message, but the mesh displays in white without any texture!
node->setMaterialTexture( 0, driver->getTexture(resPath(argv,"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;
}
*ok, der witz war extrem doof, musste aber mal sein