Ignore:
Timestamp:
07/04/05 17:57:51 (19 years ago)
Author:
mattausch
Message:

added item buffer queries.

Location:
trunk/VUT/work/TestCullingTerrain
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/work/TestCullingTerrain/TerrainFrameListener.cpp

    r153 r154  
    99#include "OgreVisibilityTerrainSceneManager.h" 
    1010#include "VisibilityInfo.h" 
    11 #include "OgreItemBufferQueryManager.h"; 
     11#include "OgreItemBufferQueryManager.h" 
     12#include "OgreOcclusionQueriesQueryManager.h" 
     13 
     14 
     15 
     16 
    1217// output file for frame info 
    1318const char* frames_out_filename = "frame.out"; 
     
    1621 
    1722 
     23// --- captions for overlays 
     24 
    1825String currentAlgorithmCaptions[GtpVisibility::VisibilityEnvironment::NUM_CULLING_MANAGERS] =  
    1926{ 
     
    2330}; 
    2431 
    25 String queryTypeCaptions[4] =  
    26 { 
    27         "from camera, visible pixels",  
    28         "from viewpoint, visible pixels",  
    29         "from camera, relative visibility", 
    30         "from viewpoint, relative visibility" 
     32String queryTypeCaptions[] =  
     33{ 
     34        "from camera",  
     35        "from viewpoint" 
     36}; 
     37 
     38String queryRelativeVisCaptions[] =  
     39{ 
     40        "visible pixels",  
     41        "relative visibility" 
     42}; 
     43 
     44String queryMethodCaptions[] =  
     45{ 
     46        "occlusion queries",  
     47        "item buffer" 
    3148}; 
    3249 
     
    360377} 
    361378//----------------------------------------------------------------------- 
    362 void TerrainFrameListener::ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility) 
     379void TerrainFrameListener::ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility,  
     380                                                                                                bool useItemBuffer) 
    363381{ 
    364382        // TODO: change this (does not work with other scene manager plugins) 
    365         VisibilityTerrainSceneManager *sm = dynamic_cast<VisibilityTerrainSceneManager *>(mSceneMgr); 
    366  
    367         mQueryManager = new ItemBufferQueryManager(sm->GetHierarchyInterface(), mWindow->getViewport(0)); 
    368         //mQueryManager = new PlatformQueryManager(sm->GetHierarchyInterface(), mWindow->getViewport(0)); 
     383        VisibilityTerrainSceneManager *sm =  
     384                dynamic_cast<VisibilityTerrainSceneManager *>(mSceneMgr); 
     385 
     386        if (useItemBuffer) 
     387        { 
     388                mQueryManager = new ItemBufferQueryManager(sm->GetHierarchyInterface(),  
     389                        mWindow->getViewport(0)); 
     390        } 
     391        else 
     392        { 
     393                mQueryManager = new OcclusionQueriesQueryManager(sm->GetHierarchyInterface(),  
     394                        mWindow->getViewport(0)); 
     395        } 
    369396 
    370397        sm->GetVisibilityManager()->SetQueryManager(mQueryManager); 
     
    403430                        ++geomSize; 
    404431                         
    405                         std::stringstream d; d << "Geometry visibility: " << vis; 
     432                        std::stringstream d; d << "Geometry " << geomSize << " visibility: " << vis; 
    406433                        LogManager::getSingleton().logMessage(d.str()); 
    407434                } 
     
    431458                averageGeometryVis /= (float)geomSize; 
    432459 
    433         char str[100]; 
    434  
    435460        //-- update visibility queries stats 
    436461    try  
    437462        { 
    438                 //-- visibility queries stats 
    439                 int idx = fromPoint ?  1 : 0; 
    440                 idx += relativeVisibility ? 2 : 0; 
    441  
    442                 sprintf(str, ": %s", queryTypeCaptions[idx].c_str());  
     463                char str[100]; 
     464                 
     465                sprintf(str, ": %s, %s, %s",  
     466                                queryTypeCaptions[fromPoint ?  1 : 0].c_str(), 
     467                                queryRelativeVisCaptions[relativeVisibility ? 1 : 0].c_str(), 
     468                                queryMethodCaptions[useItemBuffer ? 1 : 0].c_str()); 
     469 
    443470                mQueryTypeInfo->setCaption(str); 
    444471 
     
    912939                break; 
    913940        case KC_F5: 
    914                 ApplyVisibilityQuery(false, mShiftPressed); 
     941                ApplyVisibilityQuery(false, mShiftPressed, false); 
    915942                break; 
    916943        case KC_F6: 
    917                 ApplyVisibilityQuery(true, mShiftPressed); 
    918                 break; 
    919  
     944                ApplyVisibilityQuery(true, mShiftPressed, false); 
     945                break; 
     946        case KC_F7: 
     947                ApplyVisibilityQuery(false, mShiftPressed, true); 
     948                break; 
     949        case KC_F8: 
     950                ApplyVisibilityQuery(true, mShiftPressed, true); 
     951                break; 
    920952        case KC_F11: 
    921953                takeScreenShot(); 
  • trunk/VUT/work/TestCullingTerrain/TerrainFrameListener.h

    r151 r154  
    117117        /** Applies visibility query. Collects the visible objects  
    118118                and their visibility information. 
    119                 @param fromnPoint if query should be from point or from camera 
    120                 @param projectedPixels if query should return number of visible pixels or the ratio 
    121                 visible pixels / projected pixels. 
     119                @param fromPoint if query should be from point or from camera 
     120                @param relativeVisibility if query should return number of visible pixels or  
     121                the ratio visible / projected pixels. 
     122                @param useItemBuffer if item buffer should be used or occlusion queries 
    122123        */ 
    123         void ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility); 
     124        void ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility, bool useItemBuffer); 
    124125 
    125126        void toggleShowQueryStats(); 
Note: See TracChangeset for help on using the changeset viewer.