#0 

10-06-2008 08:44:55

samsoft
Membre
Lieu: Moissy Cramayel (77550)
Date d'inscription: 10-06-2008
Messages: 14
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

Code:

#include "Window.h"

using namespace irr;

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

Window.h

Code:

#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

Code:

#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


#1 

10-06-2008 10:39:30

morpheusDX
Petit nouveau
Date d'inscription: 28-04-2008
Messages: 3

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:

Code:

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:

Code:

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

Dernière modification par morpheusDX (10-06-2008 10:40:46)


Force et sagesse...

Hors ligne


#2 

10-06-2008 12:13:14

samsoft
Membre
Lieu: Moissy Cramayel (77550)
Date d'inscription: 10-06-2008
Messages: 14
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".

Dernière modification par samsoft (10-06-2008 12:14:03)


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

Hors ligne


#3 

10-06-2008 17:39:19

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
58 invités en ligne
Aucun membre connecté
RSS Feed