#1 

10-06-2008 06:44:55

samsoft
Membres
Avatar de samsoft
Date d'inscription:
Messages: 14
IP: 86.68.73.168
Courriel  Site web

Bonjour, je suis en train de lire le tuto sur le site du zéro sur le moteur 3d Irrlicht. 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

#include "Window.h"

using namespace irr;

int main(void)
{
    Window *myWindow = new Window();
    myWindow->addObject();
    myWindow->rend();
    return 0;
}

Window.h
#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

Window.cpp
#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();
}

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).

Merci d'avancesmile


Le savoir est un droit universel, libérez le code source !

Hors ligne


#2 

10-06-2008 08:39:30

morpheusDX
Membres
Avatar de morpheusDX
Date d'inscription:
Messages: 3
IP: 81.51.26.238
Courriel

En fait c'est très simple, l'erreur ne vient pas de la façon dont tu emplois Irrlicht, mais de ton code lui même, partie C++.
Tu redéfinis dans ton constructeur tes variable d'environement graphique:

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();
}

ce qui fait qu'elles sont considérées comme des variables 'locale' et n'alimente en rien les éléments de ta classe.
Il faut donc seulement écrire:

Window::Window()
{
    device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(800, 600), 32, false, true, false, 0);
    driver = device->getVideoDriver();
    scenegraph = device->getSceneManager();
}

et la cela fonctionne très bienwink


Force et sagesse...

Hors ligne


#3 

10-06-2008 10:13:14

samsoft
Membres
Avatar de samsoft
Date d'inscription:
Messages: 14
IP: 86.68.73.168
Courriel  Site web

Super, quelle erreur de ...

Merci pour toutbig_smile

PS: Désolé pour les admins/modos, je ne vois pas de bouton "résolu".


Le savoir est un droit universel, libérez le code source !

Hors ligne


#4 

10-06-2008 15:39:19

izguit
Administrateurs
Avatar de izguit
Date d'inscription:
Messages: 306
IP: 83.154.43.17
Courriel  Site web

no problem, il y a pas de bouton résolu c'est pour çasmile


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
74 invités en ligne
membre en ligne: -
RSS Feed