#1 

01-04-2008 17:42:41

sdessureault
Membres
Date d'inscription:
Messages: 4
IP: 206.167.18.35
Courriel

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


#2 

01-04-2008 18:12:54

bestben
Membres
Date d'inscription:
Messages: 133
IP: 77.192.127.131
Courriel

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

   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


Hors ligne


#3 

01-04-2008 19:26:40

sdessureault
Membres
Date d'inscription:
Messages: 4
IP: 206.167.18.35
Courriel

Merci!


Hors ligne


#4 

02-04-2008 00:21:10

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.50.94.222
Courriel  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 :

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é
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
140 invités en ligne
membre en ligne: -
RSS Feed