#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'avance smile


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 bien wink


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 tout big_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 ça smile


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

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
124 invités en ligne
membre en ligne: -
RSS Feed