Changeset 144 for trunk/VUT/Ogre


Ignore:
Timestamp:
06/22/05 00:38:49 (19 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT/Ogre
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/Ogre/include/OgrePlatformQueryManager.h

    r143 r144  
    4141                            InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    4242                            InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    43                             bool projectedPixels = false 
     43                            bool relativeVisibility = false 
    4444                            ); 
    4545     
     
    5252                               InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    5353                               InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    54                                bool projectedPixels = false 
     54                               bool relativeVisibility = false 
    5555                               ); 
    5656     
     
    7373             );   
    7474 
    75         /** Sets a viewport to render into. 
     75        /** Sets a viewport for rendering. 
    7676        */ 
    7777        void SetViewport(Viewport *vp); 
  • trunk/VUT/Ogre/src/OgrePlatformQueryManager.cpp

    r143 r144  
    2323                            InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    2424                            InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    25                             bool projectedPixels) 
     25                            bool relativeVisibility) 
    2626{ 
    2727        // we need access to the scene manager and the rendersystem 
     
    6868        */ 
    6969        // for relative visibility we need 2 rendering passes 
    70         int n = projectedPixels ? 2 : 1; 
     70        int n = relativeVisibility ? 2 : 1; 
    7171         
    7272        for (int i=0; i<n; ++i) 
     
    104104 
    105105        //---- collect results 
    106         unsigned int visiblePixels = 0; 
     106         
    107107        std::pair<InfoContainer<GtpVisibility::NodeInfo>::iterator, bool> insertNode; 
    108108        std::pair<InfoContainer<GtpVisibility::MeshInfo>::iterator, bool> insertGeom; 
     
    116116        for (nodeIt = nodeList->begin(); nodeIt != nodeIt_end; ++nodeIt) 
    117117        { 
     118                unsigned int visiblePixels = 0; 
    118119                (*visQueryIt)->GetQueryResult(visiblePixels, true); 
    119120         
    120                 int visiblePixels = visiblePixels; 
    121                 int projectedPixels = 0; 
    122  
    123                 if (projectedPixels) 
    124                 { 
    125                         (*projQueryIt)->GetQueryResult(visiblePixels, true); 
    126          
    127                         mProjectedPixels = visiblePixels; 
     121                unsigned int projectedPixels = 0; 
     122 
     123                if (relativeVisibility) 
     124                { 
     125                        (*projQueryIt)->GetQueryResult(projectedPixels, true); 
    128126                 
    129127                        ++projQueryIt; 
     
    145143        for (geometryIt = geometryList.begin(); geometryIt != geometryIt_end; ++geometryIt) 
    146144        { 
     145                unsigned int visiblePixels = 0; 
    147146                (*visQueryIt)->GetQueryResult(visiblePixels, true); 
    148147                 
    149                 int visiblePixels = visiblePixels; 
    150                 int projectedPixels = 0; 
    151  
    152                 if (projectedPixels) 
    153                 { 
    154                         (*projQueryIt)->GetQueryResult(visiblePixels, true); 
    155  
    156                         mProjectedPixels = visiblePixels; 
     148                unsigned int projectedPixels = 0; 
     149 
     150                if (relativeVisibility) 
     151                { 
     152                        (*projQueryIt)->GetQueryResult(projectedPixels, true); 
    157153 
    158154                        ++projQueryIt; 
     
    163159                // approximate depth ordering during rendering =>  
    164160                // geometry maybe occluded 
    165                 if (isVisible) 
     161                if (visiblePixels > 0) 
    166162                {                         
    167                         visibleGeometry->push_back(GtpVisibility::MeshInfo(*geometryIt,visiblePixels, projectedPixels)); 
     163                        visibleGeometry->push_back(GtpVisibility::MeshInfo(*geometryIt,  
     164                                visiblePixels, projectedPixels)); 
    168165                } 
    169166        } 
     
    181178} 
    182179//----------------------------------------------------------------------- 
     180inline bool nodeinfo_lower(const GtpVisibility::NodeInfo &info1, const GtpVisibility::NodeInfo &info2)  
     181{  
     182        return info1.GetNode() < info2.GetNode();  
     183} 
     184//----------------------------------------------------------------------- 
     185inline bool meshinfo_lower(const GtpVisibility::MeshInfo &info1, const GtpVisibility::MeshInfo &info2)  
     186{  
     187        return info1.GetMesh() < info2.GetMesh();  
     188} 
     189//----------------------------------------------------------------------- 
    183190void PlatformQueryManager::ComputeFromPointVisibility(const Vector3 &point, 
    184191                               InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    185192                               InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    186                                bool projectedPixels) 
     193                               bool relativeVisibility) 
    187194{ 
    188195        SceneManager *sm = dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface)->GetSceneManager(); 
     
    221228                LogManager::getSingleton().logMessage(d.str()); 
    222229 
    223                 ComputeCameraVisibility(*cam, visibleNodes, visibleGeometry, projectedPixels); 
     230                ComputeCameraVisibility(*cam, visibleNodes, visibleGeometry, relativeVisibility); 
    224231                 
    225232                //mViewport->getTarget()->update(); for(int j=0; j<10000000; j++)       printf("HAAHHAHAHAHAH"); 
     
    240247 
    241248        // --- visible nodes 
    242         sort(visibleNodes->begin(), visibleNodes->end()); 
     249        sort(visibleNodes->begin(), visibleNodes->end(), nodeinfo_lower); 
    243250        InfoContainer<GtpVisibility::NodeInfo>::iterator visibleNodesIt, 
    244251                visibleNodesIt_end = visibleNodes->end(); 
     
    256263                { 
    257264                        // add visibility 
    258                         nodeInfo->SetVisibility(nodeInfo->GetVisiblePixels() +  
     265                        nodeInfo->SetVisiblePixels(nodeInfo->GetVisiblePixels() +  
    259266                                (*visibleNodesIt).GetVisiblePixels()); 
     267                 
     268                        nodeInfo->SetProjectedPixels(nodeInfo->GetProjectedPixels() +  
     269                                (*visibleNodesIt).GetProjectedPixels()); 
    260270                } 
    261271 
     
    267277 
    268278        // --- visible geometry 
    269         sort(visibleGeometry->begin(), visibleGeometry->end()); 
     279        sort(visibleGeometry->begin(), visibleGeometry->end(), meshinfo_lower); 
    270280        InfoContainer<GtpVisibility::MeshInfo>::iterator visibleGeomIt, 
    271281                visibleGeomIt_end = visibleGeometry->end(); 
     
    283293                { 
    284294                        // add visibility 
    285                         geomInfo->SetVisibility(geomInfo->GetVisiblePixels() +  
     295                        geomInfo->SetVisiblePixels(geomInfo->GetVisiblePixels() +  
    286296                                (*visibleGeomIt).GetVisiblePixels()); 
     297 
     298                        geomInfo->SetProjectedPixels(nodeInfo->GetProjectedPixels() +  
     299                                (*visibleNodesIt).GetProjectedPixels()); 
    287300                } 
    288301        } 
    289302 
    290303        // now delete duplicates 
    291         visibleGeometry->erase(std::unique(visibleGeometry->begin(),  
    292                 visibleGeometry->end(), meshinfo_eq), visibleGeometry->end()); 
     304        visibleGeometry->erase(std::unique(visibleGeometry->begin(), visibleGeometry->end(),  
     305                meshinfo_eq), visibleGeometry->end()); 
    293306         
    294307} 
Note: See TracChangeset for help on using the changeset viewer.