Historique des modifications - Message

Message #8359

Sujet: Le rendu est différent selon l'OS et le compilateur


Type Date Auteur Contenu
Création du message 21-07-2010 17:23:20 Ilovechocolat
Merci ça venait bien des drivers de la cartes graphiques, quand a l'autre problème ben voici le code de la fonction qui analyse les fichiers (a savoir que sous windows, tout marche) :

Code c++ :

void GameEngine::chargerGWD(char* dir)
{
	FILE* fichier = fopen(dir, "r");
	char *p;
	if (fichier != NULL)
	{
		char chaine[200];
		char chaineMapMesh[200];
		char chaineMapTexture[200];
		char chaineMusique[200];
		char chaineCiel[200];
		int nbrPosX, nbrPosY, nbrPosZ, nbrEchelle;
		fgets(chaine, 200, fichier);
		sscanf(chaine, "%s %s %s %s %d %d %d %d\
", &chaineMapMesh, &chaineMapTexture, &chaineMusique, &chaineCiel, &nbrPosX, &nbrPosY, &nbrPosZ, &nbrEchelle);
		
		//scene
		m_sceneEngine->chargerMap(chaineMapMesh, chaineMapTexture, irr::core::vector3df(nbrPosX,nbrPosY,nbrPosZ), nbrEchelle, this);
		m_sceneEngine->changerCiel(chaineCiel, "ressources/images/meteo/soleil.png");
		//son
		m_mediaEngine->deleteAllSound();
		m_mediaEngine->jouerSonBackground(chaineMusique);

		while(fgets(chaine, 200, fichier) != NULL)
		{
			p = strchr(chaine, '\
');
			if (p)
			{
				*p = 0;
			}

			if(strcmp(chaine, "lumm") == 0)
			{
				fgets(chaine, 200, fichier);
				int nbrLummPosX, nbrLummPosY, nbrLummPosZ;
				float nbrLummColor1, nbrLummColor2, nbrLummColor3, nbrLummColor4;
				double nbrLummEchelle;
				sscanf(chaine, "%d %d %d %f %f %f %f %f\
", &nbrLummPosX, &nbrLummPosY, &nbrLummPosZ, &nbrLummColor1, &nbrLummColor2, &nbrLummColor3, &nbrLummColor4, &nbrLummEchelle);
				m_sceneEngine->ajouterLumiereMultidirectionel(irr::core::vector3df(nbrLummPosX,nbrLummPosY,nbrLummPosZ), irr::video::SColorf((irr::f32)nbrLummColor1, (irr::f32)nbrLummColor2, (irr::f32)nbrLummColor3, (irr::f32)nbrLummColor4), nbrLummEchelle);
			}
			else if(strcmp(chaine, "lumd") == 0)
			{
				fgets(chaine, 200, fichier);
				int nbrLumdPosX, nbrLumdPosY, nbrLumdPosZ, nbrLumdRotX, nbrLumdRotY, nbrLumdRotZ;
				float nbrLumdColor1, nbrLumdColor2, nbrLumdColor3, nbrLumdColor4;
				double nbrLumdEchelle;
				sscanf(chaine, "%d %d %d %d %d %d %f %f %f %f %f\
", &nbrLumdPosX, &nbrLumdPosY, &nbrLumdPosZ, &nbrLumdRotX, &nbrLumdRotY, &nbrLumdRotZ, &nbrLumdColor1, &nbrLumdColor2, &nbrLumdColor3, &nbrLumdColor4, &nbrLumdEchelle);
				m_sceneEngine->ajouterLumiereDirectionel(irr::core::vector3df(nbrLumdPosX,nbrLumdPosY,nbrLumdPosZ), irr::core::vector3df(nbrLumdRotX,nbrLumdRotY,nbrLumdRotZ), irr::video::SColorf((irr::f32)nbrLumdColor1, (irr::f32)nbrLumdColor2, (irr::f32)nbrLumdColor3, (irr::f32)nbrLumdColor4), nbrLumdEchelle);
			}
			else if(strcmp(chaine, "obj") == 0)
			{
				fgets(chaine, 200, fichier);
				char chaineObjModeleMesh[200];
				char chaineObjModeleTexture[200];
				int nbrObjPosX, nbrObjPosY, nbrObjPosZ, nbrObjRotX, nbrObjRotY, nbrObjRotZ, nbrObjCollision, nbrObjAnimStart, nbrObjAnimEnd;
				float nbrObjEchelle;
				sscanf(chaine, "%s %s %d %d %d %d %d %d %f %d %d %d\
", &chaineObjModeleMesh, &chaineObjModeleTexture, &nbrObjPosX, &nbrObjPosY, &nbrObjPosZ, &nbrObjRotX, &nbrObjRotY, &nbrObjRotZ, &nbrObjEchelle, &nbrObjCollision, &nbrObjAnimStart, &nbrObjAnimEnd);
				m_sceneEngine->ajouterObjet(chaineObjModeleMesh, chaineObjModeleTexture, irr::core::vector3df(nbrObjPosX,nbrObjPosY,nbrObjPosZ), irr::core::vector3df(nbrObjRotX,nbrObjRotY,nbrObjRotZ), nbrObjEchelle, (map::Collision)nbrObjCollision, nbrObjAnimStart, nbrObjAnimEnd);
			std::cout<<"obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
obj\
"<<std::endl;
			}
			else if(strcmp(chaine, "event") == 0)
			{
				fgets(chaine, 200, fichier);
				char chaineEventModeleMesh[200];
				char chaineEventModeleTexture[200];
				int nbrEventPosX, nbrEventPosY, nbrEventPosZ, nbrEventRotX, nbrEventRotY, nbrEventRotZ, nbrEventAction;
				sscanf(chaine, "%s %s %d %d %d %d %d %d %d\
", &chaineEventModeleMesh, &chaineEventModeleTexture, &nbrEventPosX, &nbrEventPosY, &nbrEventPosZ, &nbrEventRotX, &nbrEventRotY, &nbrEventRotZ, &nbrEventAction);
				m_sceneEngine->ajouterEvent(chaineEventModeleMesh,chaineEventModeleTexture,irr::core::vector3df(nbrEventPosX,nbrEventPosY,nbrEventPosZ),irr::core::vector3df(nbrEventRotX,nbrEventRotY,nbrEventRotZ), m_pointEventActionTable[nbrEventAction]);
			std::cout<<"event\
event\
event\
event\
event\
event\
event\
event\
event\
event\
event\
"<<std::endl;
			}
			else if(strcmp(chaine, "liquide") == 0)
			{
				fgets(chaine, 200, fichier);
				int nbrLqdPosX, nbrLqdPosY, nbrLqdPosZ, nbrLqdRotX, nbrLqdRotY, nbrLqdRotZ, nbrLqdWaterHeight, nbrLqdColorBlend;
				float nbrLumdColor1, nbrLumdColor2, nbrLumdColor3, nbrLumdColor4, nbrLqdEchelle;
				sscanf(chaine, "%d %d %d %d %d %d %f %d %f %f %f %f %d\
", &nbrLqdPosX, &nbrLqdPosY, &nbrLqdPosZ, &nbrLqdRotX, &nbrLqdRotY, &nbrLqdRotZ, &nbrLqdEchelle, &nbrLqdWaterHeight, &nbrLumdColor1, &nbrLumdColor2, &nbrLumdColor3, &nbrLumdColor4, &nbrLqdColorBlend);
				m_sceneEngine->ajouterLiquide(irr::core::vector3df(nbrLqdPosX, nbrLqdPosY, nbrLqdPosZ), irr::core::vector3df(nbrLqdRotX, nbrLqdRotY, nbrLqdRotZ), nbrLqdEchelle, nbrLqdWaterHeight, irr::video::SColorf(nbrLumdColor1, nbrLumdColor2, nbrLumdColor3, nbrLumdColor4), nbrLqdColorBlend);
			std::cout<<"liquide\
liquide\
liquide\
liquide\
liquide\
liquide\
liquide\
liquide\
"<<std::endl;
			}
		}
		fclose(fichier);
		//event
		m_receiver->maj();
		m_device->setEventReceiver(m_receiver);
		std::cout<<"le .gwd a été corectement chargé"<<std::endl;
	}
	else
	{
		std::cout<<"le .gwd n'a pas pu être ouvert"<<std::endl;
	}
}

la première partie (avant la boucle) est prise en compte, après ça ne marche plus .

Retour

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