Ignore:
Timestamp:
05/12/05 18:55:25 (19 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT/work/TestCullingTerrain
Files:
2 edited

Legend:

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

    r93 r94  
    1717 
    1818#define WIN32_LEAN_AND_MEAN 
    19 #include "windows.h" 
     19#include <windows.h> 
    2020 
    2121 
     
    2727        if(mTerrainContentGenerator) 
    2828                delete mTerrainContentGenerator; 
    29         //if(mCullCamera) delete mCullCamera; 
     29        //if(mVisualizationCamera) delete mVisualizationCamera; 
    3030} 
    3131//----------------------------------------------------------------------- 
     
    3333{ 
    3434        // Create the camera 
    35         mCamera = mSceneMgr->createCamera("PlayerCam"); 
     35        mCamera = mSceneMgr->createCamera("CullCamera"); 
    3636         
    3737        // Set a nice viewpoint 
     
    4040         
    4141        //--create cull camera 
    42         mCullCamera = mSceneMgr->createCamera("CullCamera"); 
    43         mCullCamera->setPosition(707, 2500, 528); 
    44         mCullCamera->setOrientation(Quaternion(-0.3486, 0.0122, 0.9365, 0.0329)); 
    45  
    46         mCullCamera->setNearClipDistance(1); 
     42        mVisualizationCamera = mSceneMgr->createCamera("VisualizationCamera"); 
     43        mVisualizationCamera->setPosition(707, 2500, 528); 
     44        mVisualizationCamera->setOrientation(Quaternion(-0.3486, 0.0122, 0.9365, 0.0329)); 
     45 
     46        mVisualizationCamera->setNearClipDistance(1); 
    4747        mCamera->setNearClipDistance(1); 
    4848 
     
    5050        if (mRoot->getRenderSystem()->getCapabilities()->hasCapability(RSC_INFINITE_FAR_PLANE)) 
    5151        { 
    52                 mCullCamera->setFarClipDistance(0); 
     52                mVisualizationCamera->setFarClipDistance(0); 
    5353                mCamera->setFarClipDistance(0); 
    5454        } 
    5555        else 
    5656        { 
    57                  mCullCamera->setFarClipDistance(1000); 
     57                 mVisualizationCamera->setFarClipDistance(1000); 
    5858                 mCamera->setFarClipDistance(1000); 
    5959        } 
     
    7979        mWindow->getViewport(0)->setBackgroundColour(fadeColour); 
    8080        //mSceneMgr->setFog( FOG_LINEAR, fadeColour, .001, 500, 1000); 
    81         mWindow->addViewport(mCullCamera, 10, 0.5, 0.5, 1, 1); 
    82  
     81         
    8382        // Create a skybox 
    8483    mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox", 5000, false); 
     
    133132{ 
    134133        mFrameListener= new MouseQueryListener(mWindow, mCamera, mSceneMgr,  
    135                 mGUIRenderer, mTerrainContentGenerator, mCullCamera); 
     134                mGUIRenderer, mTerrainContentGenerator, mVisualizationCamera); 
    136135        mFrameListener->showDebugOverlay(true); 
    137136        mRoot->addFrameListener(mFrameListener); 
     
    150149                                                                           CEGUI::Renderer *renderer, 
    151150                                                                           TerrainContentGenerator *sceneGenerator, 
    152                                                                            Camera *cullCamera):  
     151                                                                           Camera *vizCamera):  
    153152ExampleFrameListener(win, cam, false, true),  
    154153mGUIRenderer(renderer),  
     
    163162mShowOctree(false), 
    164163mUseCulling(true), 
    165 mUseOptimization(false), 
     164mUseOptimization(true), 
    166165mUseCullCamera(false), 
    167 mCullCamera(cullCamera) 
     166mVisualizationCamera(vizCamera) 
    168167{ 
    169168        // Reduce move speed 
     
    293292bool MouseQueryListener::frameStarted(const FrameEvent &evt) 
    294293{ 
     294        clamp2Terrain(mCamera); 
     295        clamp2Terrain(mVisualizationCamera); 
     296 
     297        return ExampleFrameListener::frameStarted(evt); 
     298} 
     299void MouseQueryListener::clamp2Terrain(Camera *cam) 
     300{ 
    295301        // clamp to terrain 
    296         Vector3 camPos = mCamera->getPosition(); 
     302        Vector3 camPos = cam->getPosition(); 
    297303        Vector3 queryResult; 
    298304 
    299     if(mRayQueryExecutor->executeRayQuery(&queryResult,  
    300                 Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y)) 
     305        if(mRayQueryExecutor->executeRayQuery(&queryResult,  
     306                        Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y)) 
    301307        { 
    302                 mCamera->setPosition(mCamera->getPosition().x, queryResult.y + 10,  
    303                         mCamera->getPosition().z); 
     308                cam->setPosition(cam->getPosition().x, queryResult.y + 10,  
     309                        cam->getPosition().z); 
    304310        } 
    305  
    306         camPos = mCullCamera->getPosition(); 
    307  
    308         if(mRayQueryExecutor->executeRayQuery(&queryResult,  
    309                 Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y)) 
    310         { 
    311                 mCullCamera->setPosition(mCullCamera->getPosition().x, queryResult.y + 10,  
    312                         mCullCamera->getPosition().z); 
    313         } 
    314  
    315         return ExampleFrameListener::frameStarted(evt); 
    316311} 
    317312//----------------------------------------------------------------------- 
     
    332327        KEY_PRESSED(KC_C, 0.3, toggleUseCulling()); 
    333328        KEY_PRESSED(KC_V, 0.3, toggleCullCamera()); 
    334         KEY_PRESSED(KC_X, 0.3, fixCullCamera()); 
     329        KEY_PRESSED(KC_X, 0.3, FixVizCamera()); 
    335330 
    336331        updateStats(); 
     332        //if(mWindow->getViewport(1))   mWindow->getViewport(1)->update(); 
    337333 
    338334    return ExampleFrameListener::frameStarted(evt) && ExampleFrameListener::frameEnded(evt);         
     
    420416{ 
    421417        mUseCullCamera = !mUseCullCamera; 
     418 
     419        if(mUseCullCamera) 
     420        {        
     421                mWindow->addViewport(mVisualizationCamera, 10, 0.5, 0.5, 1, 1); 
     422                mWindow->getViewport(1)->setClearEveryFrame(true); 
     423        } 
     424        else 
     425                mWindow->removeViewport(10); 
     426 
    422427        mSceneMgr->setOption("CullCamera", &mUseCullCamera); 
    423428} 
    424429//----------------------------------------------------------------------- 
    425 void MouseQueryListener::fixCullCamera() 
    426 { 
    427         mCullCamera->setPosition(mCamera->getPosition()); 
    428         mCullCamera->setOrientation(mCamera->getOrientation()); 
     430void MouseQueryListener::FixVizCamera() 
     431{ 
     432        mVisualizationCamera->setPosition(mCamera->getPosition()); 
     433        mVisualizationCamera->setOrientation(mCamera->getOrientation()); 
     434        clamp2Terrain(mVisualizationCamera); 
    429435} 
    430436 
  • trunk/VUT/work/TestCullingTerrain/TestCullingTerrainApplication.h

    r93 r94  
    3030 
    3131    MouseQueryListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager,  
    32                 CEGUI::Renderer *renderer, TerrainContentGenerator *contentGenerator, Camera *cullCamera); 
     32                CEGUI::Renderer *renderer, TerrainContentGenerator *contentGenerator, Camera *vizCamera); 
    3333 
    3434    ~MouseQueryListener(); 
     
    6767        void toggleUseCulling(); 
    6868        void toggleCullCamera(); 
    69         void fixCullCamera(); 
     69        void FixVizCamera(); 
    7070 
    7171protected: 
     72        void clamp2Terrain(Camera *cam); 
     73 
    7274    bool mLMouseDown, mRMouseDown;     // True if the mouse buttons are down 
    7375    SceneManager *mSceneMgr;           // A pointer to the scene manager 
     
    101103        bool mUseCullCamera; 
    102104 
    103         Camera *mCullCamera; 
     105        Camera *mVisualizationCamera; 
    104106}; 
    105107 
     
    127129        TerrainContentGenerator *mTerrainContentGenerator; 
    128130 
    129         Camera *mCullCamera; 
     131        Camera *mVisualizationCamera; 
    130132         
    131133private: 
Note: See TracChangeset for help on using the changeset viewer.