18-04-2009 15:07:46
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.82.215
- Courriel
Voila, j'ai un probleme avec un chargement de fichier. Pour lire un fichier, il faut un device et un filesystem. Jusque là, tout va bien. Maintenant il s'avère que ce fichier renferme les parametres de création de la fenetre de jeu... Un peu paradoxal tout ça! Mais bon, soit! Je créé une fenetre bidon pour le chargement du fichier, je la drop() puis je créé la deuxieme. Magnifique, ma fenetre apparait avec les bons parametres, donc le chargement a réussi
. Et la, derriere ma seconde fenetre... la premiere qui n'a pas disparue!
Je la ferme et la ça ferme les deux fenetres
. Prise de tete, decorticage de la demo fournie avec Irrlicht qui a le meme syteme, mais pas moyen de faire disparaitre la premiere sans fermer la deuxieme avec! Alors si quelqu'un à ne serait-ce qu'une idée, qu'il l'expose avant que je n'ai plus de cheveux
.
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
18-04-2009 19:11:24
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 92.134.104.249
- Courriel Site web
J'espère que tu n'es pas encore chauve
.
Peut-être pourrais-tu poster ton code qu'on voit ce qui peut clocher ?
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
19-04-2009 07:33:42
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.82.215
- Courriel
Voila le code :
bool Bibliotheque::load_config()
{
device = createDevice(); // device est une variable de la classe Bibliotheque ainsi que fileSys
fileSys = device->getFileSystem(); // device est la pour avoir fileSys (pour la lecture xml)
// lecture du fichier config.xml et stockage dans les variables
int a = 0;
// vérification de l'existance du fichier
if (!(fileSys->existFile(stringc("Configuration/config.xml").c_str())))
return false;
// ouverture du fichier en lecture
IXMLReader *reader = fileSys->createXMLReader(stringc("Configuration/config.xml").c_str());
// boucle de lecture
while(reader && reader->read())
{
if(EXN_ELEMENT == reader->getNodeType())
{
if(stringw("Graphismes") == reader->getNodeName())
{
parametres.AntiAlias = vsBool(reader->getAttributeValueAsInt(L"AA"));
parametres.Bits = ((reader->getAttributeValueAsInt(L"bits") + 1) * 16);
parametres.DriverType = EDT_DIRECT3D9;
parametres.EventReceiver = 0;
parametres.Fullscreen = vsBool(reader->getAttributeValueAsInt(L"fullscreen"));
parametres.HighPrecisionFPU = true;
parametres.Vsync = vsBool(reader->getAttributeValueAsInt(L"vsync"));
switch(reader->getAttributeValueAsInt(L"resolution"))
{
case 0 :
{
parametres.WindowSize = dimension2d<s32>(640,480);
break;
}
case 1 :
{
parametres.WindowSize = dimension2d<s32>(800,600);
break;
}
case 2 :
{
parametres.WindowSize = dimension2d<s32>(1024,768);
break;
}
case 3 :
{
parametres.WindowSize = dimension2d<s32>(1280,1024);
break;
}
}
lod = reader->getAttributeValueAsInt(L"lod");
qualite_texture = reader->getAttributeValueAsInt(L"texture");
} // chargement des parametres graphiques
}// if
}// while
//libération du fichier
reader->drop();
// liberation de la fenetre
device->drop(); // BIEN QUE JE LA DROP ELLE RESTE PRESENTE ET SI J'UTILISE closeDevice() JE FERME CETTE FENETRE EST CELLE
// QUE J'OUVRE DERRIERE
return true;
}
bool Bibliotheque::create_window()
{
device = createDeviceEx(parametres); // VOICI LA 2e FENETRE, CELLE DU JEU
if (device)
return true;
else
return false;
}
bool Bibliotheque::create_environnement()
{
driver = device->getVideoDriver();
smgr = device->getSceneManager();
env = device->getGUIEnvironment();
fileSys = device->getFileSystem();
if(driver && smgr && env && fileSys)
return true;
else
return false;
}Donc je fais : load_config() puis create_window() et la traditionnelle boucle de rendu se trouve dans le fichier source les appelant.
J'espère que ça ira.
PS : Sinon pour mes cheveux, ça fais que je n'aurais pas besoin d'aller au coiffeur demain
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
19-04-2009 08:49:48
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.82.215
- Courriel
Sinon, au lieu de m'obstiner à créer une fenetre pour en récupérer le fileSytem, ne pourrais-je pas en créer une instance pour mon chargement? Si oui, comment?
J'ai trouvé ça dans CFileSystem.cpp :
//! creates a filesystem which is able to open files from the ordinary file system,
//! and out of zipfiles, which are able to be added to the filesystem.
IFileSystem* createFileSystem()
{
return new CFileSystem();
}
Mais comment l'utiliser?!
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
19-04-2009 10:47:14
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 92.134.104.249
- Courriel Site web
Pourquoi ne passes-tu pas directement par :
io::IrrXMLReader* xml = io::createIrrXMLReader("Configuration/config.xml");
ça t'éviterai de récupérer le fileSys pour ça
.
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
19-04-2009 14:10:31
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 83.192.82.215
- Courriel
Super ça marche nickel! Merci de m'avoir retirer cette épine du pied
. Dur d'être autodidacte. Ah, maintenant que j'y pense, bonne continuation pour ton projet Copland.
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
19-04-2009 21:13:58
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 92.134.104.249
- Courriel Site web
Tant mieux si ça marche bien et content d'avoir pût t'aider
.
Autodidacte je le suis également et j'en apprends encore tout les jours.
Merci pour la bonne continuation, à toi aussi.
@bientôt
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
20-04-2009 23:17:22
- dark calculator
- Membres
- Date d'inscription:
- Messages: 153
- IP: 82.248.251.223
- Courriel
SInon pour la première fenetre d'utilisait le NULLDEVICE ou pas? car sinon le problème pourait venir de là.
Hors ligne
21-04-2009 15:48:06
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 86.207.127.185
- Courriel
Je ne vois pas ce que tu entends par "utiliser le NULLDEVICE". Pour ma fenetre je la créais comme suit :
device = createDevice();
Voilà.
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne
23-04-2009 07:26:38
- dark calculator
- Membres
- Date d'inscription:
- Messages: 153
- IP: 82.67.201.37
- Courriel
Si tu fais à la place de createDevice() un createDevice(EDT_NULL) il ne devrait pas avoir de fenètre qui s'ouvre.
Remarque je crois que moi sous linux il ferme bien la fenêtre après un drop device mais avec le même code sous win il la laisse ouverte, c'est assez bizarre enfin pas tant que ça mais embetant.
Hors ligne
23-04-2009 16:28:13
- johnplayer
- Membres

- Date d'inscription:
- Messages: 431
- IP: 86.207.127.185
- Courriel
Ah, ok! Merci de la précision
. Je testerais ça pour vérifier.
core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."
Hors ligne



