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
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
Dernière modification par bestben (01-04-2008 20:13:57)
Hors ligne
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 }
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 34 invités en ligne Aucun membre connecté RSS Feed |