Ignore:
Timestamp:
05/31/06 10:20:15 (19 years ago)
Author:
gumbau
Message:
 
Location:
GTP/trunk/Lib/Geom/shared
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Geom/shared

    • Property svn:ignore set to
      arbolkk.mesh
      arbol.leafseq
      arbol.lod
      arbol.mesh
      arbol2.leafseq
      arbol3.leafseq
      arbol3.lod
      arbol3.mesh
      arbolkk.leafseq
      arbolkk.lod
  • GTP/trunk/Lib/Geom/shared/GeoTool/src/GeoMeshView.cpp

    r995 r998  
    671671 
    672672        // bind current texture to use 
    673         GLuint usetex = 0; 
    674         if (use_texture_mapping) 
    675         { 
    676                 if (current_texture_submesh[submesh]) 
    677                         usetex=current_texture_submesh[submesh]; 
    678                 else if (current_texture) 
    679                         usetex=current_texture; 
    680         } 
    681         glBindTexture(GL_TEXTURE_2D,usetex); 
    682  
     673        bool usetex = SetTextureRenderingState(submesh); 
    683674 
    684675        //      For each one of the strips. 
     
    797788        geosubmesh      =       &geoMesh->mSubMesh[submesh]; 
    798789         
     790        // bind current texture to use 
     791        bool usetex = SetTextureRenderingState(submesh); 
     792 
    799793        //      If wire is not selected. 
    800794        if (!paintWire) 
     
    817811                        if (submesh == leavesSubMesh) 
    818812                        { 
    819                                 glColor3d(0.0,1.0,0.0); 
    820                                 GLfloat green[] =       {0.0f,1.0f,0.0f,1.0f}; 
    821                                 glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,green); 
     813                                if (!usetex) 
     814                                { 
     815                                        glColor3d(0.0,1.0,0.0); 
     816                                        GLfloat green[] =       {0.0f,1.0f,0.0f,1.0f}; 
     817                                        glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,green); 
     818                                } 
     819                                else 
     820                                { 
     821                                        glEnable(GL_ALPHA_TEST); 
     822                                        glAlphaFunc(GL_GREATER,0.5f); 
     823                                        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,1); 
     824                                } 
    822825                        } 
    823826                } 
     
    832835        } 
    833836 
    834         // bind current texture to use 
    835         GLuint usetex = 0; 
    836         if (use_texture_mapping) 
    837         { 
    838                 if (current_texture_submesh[submesh]) 
    839                         usetex=current_texture_submesh[submesh]; 
    840                 else if (current_texture) 
    841                         usetex=current_texture; 
    842         } 
    843         glBindTexture(GL_TEXTURE_2D,usetex); 
    844          
     837        if (usetex) 
     838        { 
     839                glColor4f(1.0f,1.0f,1.0f,1.0f); 
     840                GLfloat white[] =       {1.0f,1.0f,1.0f,1.0f}; 
     841                glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,white); 
     842        } 
     843 
    845844        //      Enable arrays. 
    846845        glEnableClientState(GL_VERTEX_ARRAY); 
     
    871870                        GL_UNSIGNED_INT, 
    872871                        mIndexArray[submesh]); 
     872 
     873        if (submesh==leavesSubMesh) 
     874        { 
     875                glDisable(GL_ALPHA_TEST); 
     876                glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,0); 
     877        } 
    873878 
    874879}//End drawTriangleList 
     
    895900        { 
    896901                // bind current texture to use 
    897                 GLuint usetex = 0; 
    898                 if (use_texture_mapping) 
    899                 { 
    900                         if (current_texture_submesh[submesh]) 
    901                                 usetex=current_texture_submesh[submesh]; 
    902                         else if (current_texture) 
    903                                 usetex=current_texture; 
    904                 } 
    905                 glBindTexture(GL_TEXTURE_2D,usetex);             
     902                bool usetex = SetTextureRenderingState(submesh); 
    906903 
    907904                color_index     =       0; 
     
    994991        current_strip   =       0; 
    995992 
    996         glEnable(GL_ALPHA_TEST); 
    997 //      glEnable(GL_BLEND); 
    998993        // DRAW THE TRUNK AS A LODSTRIP OBJECT 
    999994 
     
    1001996        for (int submesh = 0; submesh < geoMesh->mSubMeshCount; submesh++) 
    1002997        { 
     998                if (submesh==leavesSubMesh) 
     999                        continue; 
     1000 
    10031001                // bind current texture to use 
    1004                 GLuint usetex = 0; 
    1005                 if (use_texture_mapping) 
    1006                 { 
    1007                         if (current_texture_submesh[submesh]) 
    1008                                 usetex=current_texture_submesh[submesh]; 
    1009                         else if (current_texture) 
    1010                                 usetex=current_texture; 
    1011                 } 
    1012                 glBindTexture(GL_TEXTURE_2D,usetex);             
     1002                bool usetex = SetTextureRenderingState(submesh); 
    10131003 
    10141004                color_index     =       0; 
     
    10821072 
    10831073        // DRAW THE LEAVES AS A TRIANGLE SOUP 
    1084         glColor3f(0,1,1); 
    1085         glDisable(GL_LIGHTING); 
     1074        // bind current texture to use 
     1075        bool usetex = SetTextureRenderingState(leavesSubMesh); 
     1076 
     1077        glEnable(GL_ALPHA_TEST); 
     1078        glAlphaFunc(GL_GREATER,0.5f); 
     1079        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,1); 
     1080 
    10861081        glBegin(GL_TRIANGLES); 
    10871082        const Geometry::VertexData *foliage_verts = lodTreeLib->Get_Foliage_VertexData(); 
     
    10901085        { 
    10911086                float vx,vy,vz; 
     1087                if (usetex) 
     1088                { 
     1089                        foliage_verts->GetVertexTexCoord(foliage_inds->GetIndex(j),vx,vy); 
     1090                        glTexCoord2f(vx,vy); 
     1091                } 
     1092                foliage_verts->GetVertexNormal(foliage_inds->GetIndex(j),vx,vy,vz); 
     1093                glNormal3f(vx,vy,vz); 
    10921094                foliage_verts->GetVertexCoord(foliage_inds->GetIndex(j),vx,vy,vz); 
    10931095                glVertex3f(vx,vy,vz); 
     
    10951097        glEnd(); 
    10961098 
    1097         glEnable(GL_LIGHTING); 
    10981099        glColor3f(1,1,1); 
    1099          
    1100 }//End drawTriangleStrip. 
     1100        glDisable(GL_ALPHA_TEST); 
     1101        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,0);        
     1102} 
    11011103 
    11021104 
     
    11501152        glMatrixMode(GL_PROJECTION); 
    11511153        glLoadIdentity(); 
    1152  
    1153         if (current_texture && use_texture_mapping) 
    1154                 glEnable(GL_TEXTURE_2D); 
    1155         else 
    1156                 glDisable(GL_TEXTURE_2D); 
    11571154 
    11581155        glEnable(GL_LIGHTING); 
     
    12991296        } 
    13001297} 
     1298 
     1299 
     1300bool    GeoMeshView::SetTextureRenderingState(int submesh) 
     1301{ 
     1302        GLuint usetex = 0; 
     1303        if (use_texture_mapping) 
     1304        { 
     1305                if (current_texture_submesh[submesh]) 
     1306                        usetex=current_texture_submesh[submesh]; 
     1307                else if (current_texture) 
     1308                        usetex=current_texture; 
     1309        } 
     1310        if (usetex) 
     1311                glEnable(GL_TEXTURE_2D); 
     1312        else 
     1313                glDisable(GL_TEXTURE_2D); 
     1314 
     1315        glBindTexture(GL_TEXTURE_2D,usetex); 
     1316 
     1317        return (usetex!=0); 
     1318} 
     1319 
     1320 
     1321int             GeoMeshView::findLeavesSubMesh(void) 
     1322{ 
     1323        for (int i=0; i<geoMesh->mSubMeshCount; i++) 
     1324                if (geoMesh->mSubMesh[i].mType==GEO_TRIANGLE_LIST) 
     1325                        return i; 
     1326        return -1; 
     1327} 
  • GTP/trunk/Lib/Geom/shared/GeoTool/src/GeoMeshViewUI.cpp

    r995 r998  
    2424        //      Deactive Lod tree visualization. 
    2525        geoMeshView->deactiveLodTree(); 
    26  
    27         geoMeshView->resetTextures(); 
    28         BuildLoadTextureSubMeshMenu(); 
    2926 
    3027        //      Repaint the window. 
     
    922919                        //      Show title. 
    923920                        mProcessTitle->label("Visualize LodTrees"); 
     921 
     922                        // set the submesh with triangle lists as the leaves submesh 
     923                        geoMeshView->setLeavesSubMesh(geoMeshView->findLeavesSubMesh()); 
    924924 
    925925                        //      Show the Visulize LodTree panel. 
     
    25212521                        //      Restore simplification state. 
    25222522                        simplificationState     =       NO_SIMPLIFICATION; 
     2523 
     2524                        geoMeshView->resetTextures(); 
     2525                        BuildLoadTextureSubMeshMenu(); 
    25232526                } 
    25242527        } 
Note: See TracChangeset for help on using the changeset viewer.