Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4705 connectés 

 


Dernière réponse
Sujet : [C++] Lenteur pendant un chargement de fichier
Alload J'essaie de charger un fichier en analysant ses données textes, mais à chaque fois ça met un temps énorme que je ne suis jamais arrivé au bout... Bizzare surtout que le fichier est pas gros, enfin voilà mon code, si vous pouviez m'aider:
 
class CMaterial
{
public:
 unsigned short ambient[3];
 unsigned short diffuse[3];
 unsigned short specular[3];
};
 
unsigned int nMaterials;
CMaterial* pMaterials;
 
unsigned int nVertices;
unsigned int nFaces;
unsigned int nMaterialRef;
CVertex* pVertices;
 
ifstream file(szPath);
 
 string buffer;
 unsigned int nCurrentMaterial;
 unsigned int nCurrentVertex;
 float x, y, z;
 
 while (!file.eof())
 {
  file >> buffer;
 
 
  //Chargement des informations sur les materials
 
  if (buffer == "*MATERIAL_COUNT" )
  {
   file >> nMaterials;
   pMaterials = new CMaterial[nMaterials];
  }
 
  if (buffer == "*MATERIAL" )
  {
   file >> nCurrentMaterial;
  }
 
  if (buffer == "*MATERIAL_AMBIENT" )
  {
   file >> pMaterials[nCurrentMaterial].ambient[0];
   file >> pMaterials[nCurrentMaterial].ambient[1];
   file >> pMaterials[nCurrentMaterial].ambient[2];
  }
 
  if (buffer == "*MATERIAL_DIFFUSE" )
  {
   file >> pMaterials[nCurrentMaterial].diffuse[0];
   file >> pMaterials[nCurrentMaterial].diffuse[1];
   file >> pMaterials[nCurrentMaterial].diffuse[2];
  }
 
  if (buffer == "*MATERIAL_SPECULAR" )
  {
   file >> pMaterials[nCurrentMaterial].specular[0];
   file >> pMaterials[nCurrentMaterial].specular[1];
   file >> pMaterials[nCurrentMaterial].specular[2];
  }
 
 
  //Chargement des informations sur les objects
 
  if (buffer == "*MESH_NUMVERTEX" )
  {
   file >> nVertices;
   pVertices = new CVertex[nVertices];
  }
 
  if (buffer == "*MESH_NUMFACES" )
  {
   file >> nFaces;
  }
 
  if (buffer == "*MESH_VERTEX" )
  {
   file >> nCurrentVertex;
   file >> x;
   file >> y;
   file >> z;
 
   pVertices[nCurrentVertex].Set( x, y, z,
           pMaterials[0].diffuse[0],
           pMaterials[0].diffuse[1],
           pMaterials[0].diffuse[2]);
  }
 }
 
 file.close();

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Alload J'essaie de charger un fichier en analysant ses données textes, mais à chaque fois ça met un temps énorme que je ne suis jamais arrivé au bout... Bizzare surtout que le fichier est pas gros, enfin voilà mon code, si vous pouviez m'aider:
 
class CMaterial
{
public:
 unsigned short ambient[3];
 unsigned short diffuse[3];
 unsigned short specular[3];
};
 
unsigned int nMaterials;
CMaterial* pMaterials;
 
unsigned int nVertices;
unsigned int nFaces;
unsigned int nMaterialRef;
CVertex* pVertices;
 
ifstream file(szPath);
 
 string buffer;
 unsigned int nCurrentMaterial;
 unsigned int nCurrentVertex;
 float x, y, z;
 
 while (!file.eof())
 {
  file >> buffer;
 
 
  //Chargement des informations sur les materials
 
  if (buffer == "*MATERIAL_COUNT" )
  {
   file >> nMaterials;
   pMaterials = new CMaterial[nMaterials];
  }
 
  if (buffer == "*MATERIAL" )
  {
   file >> nCurrentMaterial;
  }
 
  if (buffer == "*MATERIAL_AMBIENT" )
  {
   file >> pMaterials[nCurrentMaterial].ambient[0];
   file >> pMaterials[nCurrentMaterial].ambient[1];
   file >> pMaterials[nCurrentMaterial].ambient[2];
  }
 
  if (buffer == "*MATERIAL_DIFFUSE" )
  {
   file >> pMaterials[nCurrentMaterial].diffuse[0];
   file >> pMaterials[nCurrentMaterial].diffuse[1];
   file >> pMaterials[nCurrentMaterial].diffuse[2];
  }
 
  if (buffer == "*MATERIAL_SPECULAR" )
  {
   file >> pMaterials[nCurrentMaterial].specular[0];
   file >> pMaterials[nCurrentMaterial].specular[1];
   file >> pMaterials[nCurrentMaterial].specular[2];
  }
 
 
  //Chargement des informations sur les objects
 
  if (buffer == "*MESH_NUMVERTEX" )
  {
   file >> nVertices;
   pVertices = new CVertex[nVertices];
  }
 
  if (buffer == "*MESH_NUMFACES" )
  {
   file >> nFaces;
  }
 
  if (buffer == "*MESH_VERTEX" )
  {
   file >> nCurrentVertex;
   file >> x;
   file >> y;
   file >> z;
 
   pVertices[nCurrentVertex].Set( x, y, z,
           pMaterials[0].diffuse[0],
           pMaterials[0].diffuse[1],
           pMaterials[0].diffuse[2]);
  }
 }
 
 file.close();

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)