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
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
01-04-2008 19:26:40
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



