Bonjour, je suis en train de lire un tuto . J'ai vu que le code est un peu "fourre tout" dans la mesure où tout est dans le main.
J'ai donc voulu tester un code qui fait la même chose que dans le tuto en codant "vraiment" en c++ mais ca déconne à l'exécution (xxx.exe à rencontré une erreur et doit fermer...).
Voilà mon code:
main.cpp
Window.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "Window.h" using namespace irr; int main(void) { Window *myWindow = new Window(); myWindow->addObject(); myWindow->rend(); return 0; }
Window.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef WINDOW_H_INCLUDED #define WINDOW_H_INCLUDED #include <irrlicht.h> class Window { public: Window(); void addObject(); void rend(); ~Window(); private: irr::IrrlichtDevice *device; irr::video::IVideoDriver *driver; irr::scene::ISceneManager *scenegraph; irr::scene::IAnimatedMesh *modele; }; #endif // WINDOW_H_INCLUDED
Si je fourre tout dans le constructeur (en supprimant les fonctions rend et addObject), tout fonctionne sinon ca déconne (comme décrit précédement). Cela prouve que les fichiers existent, aucun problème à ce niveau là (j'ai placé les deux fichiers dans le rep courrant de mon app).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #include "Window.h" #include <iostream> using namespace irr; using namespace std; Window::Window() { IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(800, 600), 32, false, true, false, 0); video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager *scenegraph = device->getSceneManager(); } void Window::addObject() { scene::IAnimatedMesh *modele = scenegraph->getMesh("faerie.md2"); scene::IAnimatedMeshSceneNode *Nmodele = scenegraph->addAnimatedMeshSceneNode(modele); Nmodele->setMaterialFlag(video::EMF_LIGHTING, false); Nmodele->setFrameLoop(1, 310); Nmodele->setMaterialTexture(0, driver->getTexture("Faerie5.bmp")); } void Window::rend() { while(device->run()) { driver->beginScene (true, true, video::SColor(0, 200, 200, 200)); scenegraph->drawAll(); driver->endScene(); } } Window::~Window() { device->drop(); }
Merci d'avance,
EDIT: J'ai résolu le problème c'est au niveau du constructeur, il ne faut pas redéfinir les variables : merci morpheusDX
Partager