|
From: julien r. <jul...@us...> - 2005-11-30 16:46:03
|
Update of /cvsroot/epfl/engine In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31418 Modified Files: glrenderer.cc material.cc material_manager.cc model_manager.cc Log Message: ... Index: material.cc =================================================================== RCS file: /cvsroot/epfl/engine/material.cc,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** material.cc 24 Nov 2005 20:47:07 -0000 1.1.1.1 --- material.cc 30 Nov 2005 16:45:54 -0000 1.2 *************** *** 68,73 **** void tgMaterial::Load () { ! if (!pFileManager->Exist(sColorName.data())) //si le fichier image n'existe pas return; tgImage* img = new tgImage(sColorName); --- 68,77 ---- void tgMaterial::Load () { ! if(bLoaded) ! return; ! if (!pFileManager->Exist(sColorName.data())) {//si le fichier image n'existe pas ! out << "Pas de fichier image " << sColorName << endl; return; + } tgImage* img = new tgImage(sColorName); Index: material_manager.cc =================================================================== RCS file: /cvsroot/epfl/engine/material_manager.cc,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** material_manager.cc 24 Nov 2005 20:47:06 -0000 1.1.1.1 --- material_manager.cc 30 Nov 2005 16:45:54 -0000 1.2 *************** *** 13,25 **** void tgMaterialManager::Initialize () { ! int file = pFileManager->Open("data/default.mtr", TGFILE_TEXT); ! tgMaterial* mat = new tgMaterial(file); matMap["notexture"] = mat; mat->Load(); ! pFileManager->Close(file); ! ! AddFile("data/default.mtr"); ! /*if(!matMap["notexture"]) ! err << "ERROR OMFG" << endl;*/ } --- 13,26 ---- void tgMaterialManager::Initialize () { ! // int file = pFileManager->Open("data/default.mtr", TGFILE_TEXT); ! // tgMaterial* mat = new tgMaterial(file); ! tgMaterial* mat = new tgMaterial("data/textures/notexture.tga"); matMap["notexture"] = mat; mat->Load(); ! if(!mat->Loaded()) //probleme lors du chargement du notexture ! out << "chargement de notexture :\t ERREUR" << endl; ! else ! out << "chargement de notexture :\t OK" << endl; ! // pFileManager->Close(file); } *************** *** 28,33 **** materialMap_t::iterator i = matMap.find(name); if (i != matMap.end()) { //le material est dans notre liste ! i->second->Load (); ! return i->second; } else { //sinon on ajoute la texture direct #define ALL_TEXTURES --- 29,41 ---- materialMap_t::iterator i = matMap.find(name); if (i != matMap.end()) { //le material est dans notre liste ! if(!i->second->Loaded()) {//il n'a pas encore ete charge ! i->second->Load(); ! if (i->second->Loaded()) //le chargement s'est-il bien passe ? ! return i->second; ! else ! return matMap["notexture"]; ! } else { //il est deja charge ! return i->second; ! } } else { //sinon on ajoute la texture direct #define ALL_TEXTURES *************** *** 36,40 **** mat->Load(); if (!mat->Loaded()) { ! out << "Material non trouve : " << "data/"+name+".tga" << endl; return matMap["notexture"]; } else { --- 44,49 ---- mat->Load(); if (!mat->Loaded()) { ! //out << "Material non trouve : " << "data/"+name+".tga" << endl; ! delete mat; return matMap["notexture"]; } else { *************** *** 43,46 **** --- 52,56 ---- } #else + out << "Material pas dans la liste -> notexture : " << name << endl; return matMap["notexture"]; #endif *************** *** 56,66 **** void tgMaterialManager::AddFile(const tgstring& filename) { ! int file = pFileManager->Open(filename.data(), TGFILE_TEXT); while(!pFileManager->EndOfFile(file)) { tgMaterial* mat = new tgMaterial(file); ! matMap[mat->GetName()] = mat; } ! pFileManager->Close(file); } --- 66,85 ---- void tgMaterialManager::AddFile(const tgstring& filename) { ! //TODO: Reactiver l'ajout de material via des fichiers .mtr, mais il faudrait ecrire un vrai parseur ! /* int file = pFileManager->Open(filename.data(), TGFILE_TEXT); while(!pFileManager->EndOfFile(file)) { tgMaterial* mat = new tgMaterial(file); ! //On verifie si le material n'a pas deja ete charge. ! //S'il existe deja, on ne le remplace pas par le nouveau,ca invaliderait les anciens pointeurs ! materialMap_t::iterator i = matMap.find(mat->GetName()); ! if(i != matMap.end()) { ! out << "Double chargement du material : " << mat->GetName() << endl; ! delete mat; ! } else { ! matMap[mat->GetName()] = mat; ! } } ! pFileManager->Close(file);*/ } Index: model_manager.cc =================================================================== RCS file: /cvsroot/epfl/engine/model_manager.cc,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** model_manager.cc 24 Nov 2005 20:47:12 -0000 1.1.1.1 --- model_manager.cc 30 Nov 2005 16:45:54 -0000 1.2 *************** *** 24,33 **** void tgModelManager::PreLoadModel (const tgstring& modelName, const tgstring& filename) { ! ModelsMap::iterator i = mModels.begin (); ! if ((i=mModels.find(modelName)) == mModels.end()) { tgModelCache* m = new tgModelCache(filename.data()); ! if (m->IsLoaded()) mModels[modelName] = m; ! else { mModels[modelName] = mModels["nomodel"]; delete m; --- 24,33 ---- void tgModelManager::PreLoadModel (const tgstring& modelName, const tgstring& filename) { ! ModelsMap::iterator i = mModels.find(modelName); ! if (i == mModels.end()) { // non trouve tgModelCache* m = new tgModelCache(filename.data()); ! if (m->IsLoaded()) { mModels[modelName] = m; ! } else { mModels[modelName] = mModels["nomodel"]; delete m; *************** *** 39,46 **** { ModelsMap::iterator i = mModels.begin (); ! if((i=mModels.find(modelName)) == mModels.end())//mesh non chargé return new tgModel(mModels["nomodel"]); ! else return new tgModel(i->second); } --- 39,49 ---- { ModelsMap::iterator i = mModels.begin (); ! if((i=mModels.find(modelName)) == mModels.end()) {//mesh non chargé ! out << "nomodel" << endl; return new tgModel(mModels["nomodel"]); ! } else { ! out << "trouve" << endl; return new tgModel(i->second); + } } Index: glrenderer.cc =================================================================== RCS file: /cvsroot/epfl/engine/glrenderer.cc,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** glrenderer.cc 24 Nov 2005 20:47:06 -0000 1.1.1.1 --- glrenderer.cc 30 Nov 2005 16:45:54 -0000 1.2 *************** *** 154,161 **** glBlendFunc(GL_SRC_ALPHA, GL_ONE); tgglColor4fv(&FGcolor.r); glCallLists( strlen(c), GL_BYTE, c ); ! glPopMatrix(); ! glDisable (GL_BLEND); } --- 154,163 ---- glBlendFunc(GL_SRC_ALPHA, GL_ONE); + tgglColor4fv(&FGcolor.r); glCallLists( strlen(c), GL_BYTE, c ); ! tgglDisable(GL_TEXTURE_2D); ! tgglPopMatrix(); ! tgglDisable (GL_BLEND); } *************** *** 187,195 **** { f->pMat = pMaterialManager->GetMaterial(sMatName); ! float cx; float cy; f->dListId = glGenLists (256); - f->pMat->BindColor(); for (int i=0; i<256;i++) --- 189,196 ---- { f->pMat = pMaterialManager->GetMaterial(sMatName); ! float cx; float cy; f->dListId = glGenLists (256); for (int i=0; i<256;i++) *************** *** 415,420 **** else if (l->pDirectory[i].type == Q3Defs::PatchFace) { ! tgglPolygonMode(GL_FRONT_AND_BACK, GL_LINE); ! tgglLineWidth(1.0f); Q3Defs::BspPatch* p = &l->pPatches[l->pDirectory[i].typeIndex]; --- 416,421 ---- else if (l->pDirectory[i].type == Q3Defs::PatchFace) { ! // tgglPolygonMode(GL_FRONT_AND_BACK, GL_LINE); ! // tgglLineWidth(1.0f); Q3Defs::BspPatch* p = &l->pPatches[l->pDirectory[i].typeIndex]; *************** *** 432,436 **** tgglDrawElements(GL_TRIANGLES, p->iNumIndices, GL_UNSIGNED_INT, &p->pIndices[0]); ! tgglActiveTexture(GL_TEXTURE0); tgglDisable(GL_TEXTURE_2D); tgglActiveTexture(GL_TEXTURE1); --- 433,437 ---- tgglDrawElements(GL_TRIANGLES, p->iNumIndices, GL_UNSIGNED_INT, &p->pIndices[0]); ! /* tgglActiveTexture(GL_TEXTURE0); tgglDisable(GL_TEXTURE_2D); tgglActiveTexture(GL_TEXTURE1); *************** *** 448,453 **** tgglActiveTexture(GL_TEXTURE0); tgglEnable(GL_TEXTURE_2D); ! tgglColor3f(1,1,1); ! tgglPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //_RenderBVolume(p->pBBox); numPatchRend++; --- 449,454 ---- tgglActiveTexture(GL_TEXTURE0); tgglEnable(GL_TEXTURE_2D); ! tgglColor3f(1,1,1);*/ ! // tgglPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //_RenderBVolume(p->pBBox); numPatchRend++; |