#0 

01-04-2008 19:42:41

sdessureault
Petit nouveau
Date d'inscription: 27-03-2008
Messages: 4

Bonjour,

Connaissez-vous un moyen de changer de skybox en cours d'exécution?   J'aimerais avoir un skybox (une nuit étoilée) pour la présentation de mon jeu, et un autre skybox (jour, montagnes) pour le jeu comme tel.   Je change comment?

Merci!

Sébastien

Hors ligne


#1 

01-04-2008 20:12:54

bestben
Abonné
Date d'inscription: 20-10-2007
Messages: 133

A mon avis il faut que tu redéfinisses tes texture dans la boucle principale
exemple

Code:

   irr::video::ITexture *SkyBoxtop = driver->getTexture ("top.jpg");
   irr::video::ITexture *SkyBoxbottom = driver->getTexture ("bottom.jpg");
   irr::video::ITexture *SkyBoxleft = driver->getTexture ("left.jpg");
   irr::video::ITexture *SkyBoxright = driver->getTexture ("right.jpg");
   irr::video::ITexture *SkyBoxfront = driver->getTexture ("front.jpg");
   irr::video::ITexture *SkyBoxback = driver->getTexture ("back.jpg");
   ISceneNode* SkyDome = smgr->addSkyBoxSceneNode(SkyBoxtop,SkyBoxbottom,SkyBoxleft,SkyBoxright,SkyBoxfront,SkyBoxback,0,-1);



int i = 0;
   while(device->run())
    {

        driver->beginScene(true, true, SColor(0,200,200,200));
if(i != 0)
{   
   SkyBoxtop = driver->getTexture ("1.jpg");
   SkyBoxbottom = driver->getTexture ("2.jpg");
   SkyBoxleft = driver->getTexture ("3.jpg");
   SkyBoxright = driver->getTexture ("3.jpg");
   SkyBoxfront = driver->getTexture ("3.jpg");
   SkyBoxback = driver->getTexture ("3.jpg");
   SkyDome = smgr->addSkyBoxSceneNode(SkyBoxtop,SkyBoxbottom,SkyBoxleft,SkyBoxright,SkyBoxfront,SkyBoxback,0,-1);
};
        smgr->drawAll();
        guienv->drawAll();

        driver->endScene();
    }

et comme sa dès que tu à besoin de changer ta skybox tu mets i à 1

Dernière modification par bestben (01-04-2008 20:13:57)

Hors ligne


#2 

01-04-2008 21:26:40

sdessureault
Petit nouveau
Date d'inscription: 27-03-2008
Messages: 4

Merci!

Hors ligne


#3 

02-04-2008 02:21:10

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Il faut savoir qu'irrlicht gardera en mémoire les textures qui avait été chargé avant.
Sinon je ne vois pas pourquoi charger les textures dans la boucle principale.
Si j'ai bien compris, tu veux juste changer de skybox entre le menu et le démarrage du jeu ?
Dans se cas il suffit simplement de redéfinir les 6 textures au moment ou ta scene change, mais il n'y à aucune utilité à le faire dans la boucle principale. D'autant que si tu copies/colles le code au dessus, Irrlicht tentera de remplacer les textures en boucle d'où une perte de performance....

Au pire si tu veux utiliser se code dans la boucle, fait le avec une variable static du genre :

Code:

static bool FirstSky=true;
if (FirstSky==true)
{
//tu redéfini ici ta skybox
FirstSky=false;//ici tu mets ta variable à false sinon il va tenter de loader en boucle
}

Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

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
90 invités en ligne
Aucun membre connecté
RSS Feed