Changeset 316 for trunk/VUT/Ogre


Ignore:
Timestamp:
10/10/05 15:23:32 (19 years ago)
Author:
mattausch
Message:

queries are realized as templates

Location:
trunk/VUT/Ogre
Files:
6 edited

Legend:

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

    r174 r316  
    1919     
    2020    void ComputeCameraVisibility(const Camera &camera, 
    21                             InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    22                             InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    23                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     21                            GtpVisibility::NodeInfoContainer *visibleNodes, 
     22                            GtpVisibility::MeshInfoContainer *visibleGeometry, 
     23                                GtpVisibility::PatchInfoContainer *visiblePatches, 
    2424                            bool relativeVisibility = false); 
    2525     
     
    2929    */ 
    3030    void ComputeFromPointVisibility(const Vector3 &point, 
    31                                InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    32                                InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    33                                    InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     31                               GtpVisibility::NodeInfoContainer *visibleNodes, 
     32                               GtpVisibility::MeshInfoContainer *visibleGeometry, 
     33                                   GtpVisibility::PatchInfoContainer *visiblePatches, 
    3434                               bool relativeVisibility = false); 
    3535     
     
    4040                                                                   GtpVisibility::QueryList::iterator &projQueryIt, 
    4141                                                                   GtpVisibility::GeometryList *geometryList,  
    42                                                                    InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
     42                                                                   GtpVisibility::MeshInfoContainer *visibleGeometry, 
    4343                                                                   bool relativeVisibility); 
    4444 
     
    4646                                                           GtpVisibility::QueryList::iterator &projQueryIt, 
    4747                                                           GtpVisibility::HierarchyNodeList *nodeList,  
    48                                                            InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
     48                                                           GtpVisibility::NodeInfoContainer *visibleNodes, 
    4949                                                           bool relativeVisibility); 
    5050 
    5151        void CollectRelativeGeometryVisibilityForItemBuffer(GtpVisibility::QueryList::iterator &projQueryIt, 
    5252                                                                                                GtpVisibility::GeometryList *geometryList,  
    53                                                                                                 InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry); 
     53                                                                                                GtpVisibility::MeshInfoContainer *visibleGeometry); 
    5454 
    5555        void CollectRelativePatchVisibilityForItemBuffer( 
    5656                                                                        GtpVisibility::QueryList::iterator &projQueryIt, 
    5757                                                                        GtpVisibility::PatchList *patchList,  
    58                                                                         InfoContainer<GtpVisibility::PatchInfo> *visiblePatches); 
     58                                                                        GtpVisibility::PatchInfoContainer *visiblePatches); 
    5959 
    6060        void CollectPatchVisibility(GtpVisibility::QueryList::iterator &visQueryIt,  
    6161                                                                GtpVisibility::QueryList::iterator &projQueryIt, 
    6262                                                                GtpVisibility::PatchList *patchList,  
    63                                                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     63                                                                GtpVisibility::PatchInfoContainer *visiblePatches, 
    6464                                                                bool relativeVisibility); 
    6565 
    66         void RemoveDuplicateNodes(InfoContainer<GtpVisibility::NodeInfo> *visibleNodes); 
    67         void RemoveDuplicateGeometry(InfoContainer<GtpVisibility::MeshInfo> *visibleMesh); 
    68         void RemoveDuplicatePatches(InfoContainer<GtpVisibility::PatchInfo> *visiblePatches); 
     66        void RemoveDuplicateNodes(GtpVisibility::NodeInfoContainer *visibleNodes); 
     67        void RemoveDuplicateGeometry(GtpVisibility::MeshInfoContainer *visibleMesh); 
     68        void RemoveDuplicatePatches(GtpVisibility::PatchInfoContainer *visiblePatches); 
    6969 
    7070        /** Returns the patches of the geometry of a given node.  
  • trunk/VUT/Ogre/include/OgrePlatformQueryManager.h

    r174 r316  
    2525    */ 
    2626    void ComputeFromPointVisibility(const Vector3 &point, 
    27                                InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    28                                InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    29                                    InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     27                               GtpVisibility::NodeInfoContainer *visibleNodes, 
     28                               GtpVisibility::MeshInfoContainer *visibleGeometry, 
     29                                   GtpVisibility::PatchInfoContainer *visiblePatches, 
    3030                               bool relativeVisibility = false); 
    3131   
    3232        void ComputeCameraVisibility(const Camera &camera, 
    33                                InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    34                                InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    35                                    InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     33                               GtpVisibility::NodeInfoContainer *visibleNodes, 
     34                               GtpVisibility::MeshInfoContainer *visibleGeometry, 
     35                                   GtpVisibility::PatchInfoContainer *visiblePatches, 
    3636                               bool relativeVisibility = false); 
    3737   
     
    4545 
    4646        void CollectItemBufferResults( 
    47                                 InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    48                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches); 
     47                                GtpVisibility::MeshInfoContainer *visibleGeometry, 
     48                                GtpVisibility::PatchInfoContainer *visiblePatches); 
    4949 
    50         void InitItemBuffer(InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    51                                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches); 
     50        void InitItemBuffer(GtpVisibility::MeshInfoContainer *visibleGeometry, 
     51                                                GtpVisibility::PatchInfoContainer *visiblePatches); 
    5252 
    5353        Viewport *mViewport; 
  • trunk/VUT/Ogre/scripts/Plugin_VisibilitySceneManager.vcproj

    r171 r316  
    150150                                Filter=""> 
    151151                                <File 
    152                                         RelativePath="..\include\OgreBspHierarchyInterface.h"> 
    153                                 </File> 
    154                                 <File 
    155152                                        RelativePath="..\include\OgreOctreeHierarchyInterface.h"> 
    156153                                </File> 
     
    191188                                Name="Header Files" 
    192189                                Filter="h;hpp;hxx;hm;inl;inc"> 
     190                                <File 
     191                                        RelativePath="..\include\OgreBspHierarchyInterface.h"> 
     192                                </File> 
    193193                                <File 
    194194                                        RelativePath="..\include\OgreOcclusionQueriesQueryManager.h"> 
  • trunk/VUT/Ogre/src/OgreOcclusionQueriesQueryManager.cpp

    r175 r316  
    88namespace Ogre { 
    99 
    10 /** 
    11    These functions necessary to enable sorting of node / mesh / patch info. 
    12 */ 
    13 //----------------------------------------------------------------------- 
    14 inline bool nodeinfo_eq(const GtpVisibility::NodeInfo &info1, const GtpVisibility::NodeInfo &info2)  
    15 {  
    16         return info1.GetNode() == info2.GetNode();  
    17 } 
    18 //----------------------------------------------------------------------- 
    19 inline bool meshinfo_eq(const GtpVisibility::MeshInfo &info1, const GtpVisibility::MeshInfo &info2)  
    20 {  
    21         return info1.GetMesh() == info2.GetMesh();  
    22 } 
    23 //----------------------------------------------------------------------- 
    24 inline bool patchinfo_eq(const GtpVisibility::PatchInfo &info1, const GtpVisibility::PatchInfo &info2)  
    25 {  
    26         return info1.GetPatch() == info2.GetPatch();  
    27 } 
    28 //----------------------------------------------------------------------- 
    29 inline bool nodeinfo_lower(const GtpVisibility::NodeInfo &info1, const GtpVisibility::NodeInfo &info2)  
    30 {  
    31         return info1.GetNode() < info2.GetNode();  
    32 } 
    33 //----------------------------------------------------------------------- 
    34 inline bool meshinfo_lower(const GtpVisibility::MeshInfo &info1, const GtpVisibility::MeshInfo &info2)  
    35 {  
    36         return info1.GetMesh() < info2.GetMesh();  
    37 } 
    38 //----------------------------------------------------------------------- 
    39 inline bool patchinfo_lower(const GtpVisibility::PatchInfo &info1, const GtpVisibility::PatchInfo &info2)  
    40 {  
    41         return info1.GetPatch() < info2.GetPatch();  
    42 } 
    43  
     10//----------------------------------------------------------------------- 
     11bool nodeinfo_eq(const GtpVisibility::NodeInfo &a, const GtpVisibility::NodeInfo &b) 
     12{ 
     13        return a.GetSource() == b.GetSource(); 
     14}  
     15bool nodeinfo_lt(const GtpVisibility::NodeInfo &a, const GtpVisibility::NodeInfo &b) 
     16{ 
     17        return a.GetSource() < b.GetSource(); 
     18} 
     19bool meshinfo_eq(const GtpVisibility::MeshInfo &a, const GtpVisibility::MeshInfo &b) 
     20{ 
     21        return a.GetSource() == b.GetSource(); 
     22}  
     23bool meshinfo_lt(const GtpVisibility::MeshInfo &a, const GtpVisibility::MeshInfo &b) 
     24{        
     25        return a.GetSource() < b.GetSource(); 
     26} 
     27bool patchinfo_eq(const GtpVisibility::PatchInfo &a, const GtpVisibility::PatchInfo &b) 
     28{ 
     29        return a.GetSource() == b.GetSource(); 
     30}  
     31bool patchinfo_lt(const GtpVisibility::PatchInfo &a, const GtpVisibility::PatchInfo &b) 
     32{ 
     33        return a.GetSource() < b.GetSource(); 
     34} 
    4435 
    4536//-----------------------------------------------------------------------  
     
    5546//----------------------------------------------------------------------- 
    5647void OcclusionQueriesQueryManager::ComputeCameraVisibility(const Camera &camera, 
    57                             InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    58                             InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    59                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     48                            GtpVisibility::NodeInfoContainer *visibleNodes, 
     49                            GtpVisibility::MeshInfoContainer *visibleGeometry, 
     50                                GtpVisibility::PatchInfoContainer *visiblePatches, 
    6051                            bool relativeVisibility) 
    6152{ 
     
    238229//----------------------------------------------------------------------- 
    239230void OcclusionQueriesQueryManager::ComputeFromPointVisibility(const Vector3 &point, 
    240                                InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    241                                InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    242                                    InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     231                               GtpVisibility::NodeInfoContainer *visibleNodes, 
     232                               GtpVisibility::MeshInfoContainer *visibleGeometry, 
     233                                   GtpVisibility::PatchInfoContainer *visiblePatches, 
    243234                               bool relativeVisibility) 
    244235{ 
     
    265256                                                GtpVisibility::QueryList::iterator &projQueryIt, 
    266257                                                GtpVisibility::HierarchyNodeList *nodeList,   
    267                                                 InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
     258                                                GtpVisibility::NodeInfoContainer *visibleNodes, 
    268259                                                bool relativeVisibility) 
    269260{ 
     
    299290                                                                        GtpVisibility::QueryList::iterator &projQueryIt, 
    300291                                                                        GtpVisibility::GeometryList *geometryList,  
    301                                                                         InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry) 
     292                                                                        GtpVisibility::MeshInfoContainer *visibleGeometry) 
    302293{ 
    303294        GtpVisibility::GeometryList::iterator geometryIt; 
     
    323314                                                                        GtpVisibility::QueryList::iterator &projQueryIt, 
    324315                                                                        GtpVisibility::PatchList *patchList,  
    325                                                                         InfoContainer<GtpVisibility::PatchInfo> *visiblePatches) 
     316                                                                        GtpVisibility::PatchInfoContainer *visiblePatches) 
    326317{ 
    327318        GtpVisibility::PatchList::iterator patchIt; 
     
    348339                                                        GtpVisibility::QueryList::iterator &projQueryIt, 
    349340                                                        GtpVisibility::GeometryList *geometryList,  
    350                                                         InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
     341                                                        GtpVisibility::MeshInfoContainer *visibleGeometry, 
    351342                                                        bool relativeVisibility) 
    352343{ 
     
    383374                                                        GtpVisibility::QueryList::iterator &projQueryIt, 
    384375                                                        GtpVisibility::PatchList *patchList,  
    385                                                         InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     376                                                        GtpVisibility::PatchInfoContainer *visiblePatches, 
    386377                                                        bool relativeVisibility) 
    387378{ 
     
    415406//----------------------------------------------------------------------- 
    416407void  OcclusionQueriesQueryManager::RemoveDuplicateNodes( 
    417                                         InfoContainer<GtpVisibility::NodeInfo> *visibleNodes) 
    418 { 
    419         sort(visibleNodes->begin(), visibleNodes->end(), nodeinfo_lower); 
    420         InfoContainer<GtpVisibility::NodeInfo>::iterator visibleNodesIt, 
     408                                        GtpVisibility::NodeInfoContainer *visibleNodes) 
     409{ 
     410        sort(visibleNodes->begin(), visibleNodes->end(), nodeinfo_lt); 
     411 
     412        GtpVisibility::NodeInfoContainer::iterator visibleNodesIt, 
    421413                visibleNodesIt_end = visibleNodes->end(); 
    422414         
     
    426418                ++visibleNodesIt) 
    427419        { 
    428                 if (!nodeInfo || (nodeInfo->GetNode() != (*visibleNodesIt).GetNode())) 
     420                if (!nodeInfo || (nodeInfo->GetSource() != (*visibleNodesIt).GetSource())) 
    429421                { 
    430422                        nodeInfo = &(*visibleNodesIt); 
     
    437429         
    438430        // physically delete duplicates 
    439         visibleNodes->erase( std::unique(visibleNodes->begin(),  
    440                 visibleNodes->end(), nodeinfo_eq), visibleNodes->end()); 
     431        visibleNodes->erase(std::unique(visibleNodes->begin(), visibleNodes->end(), nodeinfo_eq), 
     432                                                visibleNodes->end()); 
    441433} 
    442434//----------------------------------------------------------------------- 
    443435void  OcclusionQueriesQueryManager::RemoveDuplicateGeometry( 
    444                                 InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry) 
    445 { 
    446         sort(visibleGeometry->begin(), visibleGeometry->end(), meshinfo_lower); 
    447          
    448         InfoContainer<GtpVisibility::MeshInfo>::iterator visibleGeomIt, 
     436                                GtpVisibility::MeshInfoContainer *visibleGeometry) 
     437{ 
     438        sort(visibleGeometry->begin(), visibleGeometry->end(), meshinfo_lt); 
     439         
     440        GtpVisibility::MeshInfoContainer::iterator visibleGeomIt, 
    449441                        visibleGeomIt_end = visibleGeometry->end(); 
    450442 
     
    454446                ++visibleGeomIt) 
    455447        { 
    456                 if (!geomInfo || (geomInfo->GetMesh() != (*visibleGeomIt).GetMesh())) 
     448                if (!geomInfo || (geomInfo->GetSource() != (*visibleGeomIt).GetSource())) 
    457449                { 
    458450                        geomInfo = &(*visibleGeomIt); 
     
    465457 
    466458        // physically delete duplicates 
    467         visibleGeometry->erase(std::unique(visibleGeometry->begin(), visibleGeometry->end(),  
    468                 meshinfo_eq), visibleGeometry->end()); 
     459        visibleGeometry->erase(std::unique(visibleGeometry->begin(), visibleGeometry->end(), meshinfo_eq),  
     460                                                  visibleGeometry->end()); 
    469461} 
    470462//----------------------------------------------------------------------- 
    471463void  OcclusionQueriesQueryManager::RemoveDuplicatePatches( 
    472                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches) 
    473 { 
    474         sort(visiblePatches->begin(), visiblePatches->end(), patchinfo_lower); 
    475          
    476         InfoContainer<GtpVisibility::PatchInfo>::iterator visiblePatchIt, 
     464                                GtpVisibility::PatchInfoContainer *visiblePatches) 
     465{ 
     466        sort(visiblePatches->begin(), visiblePatches->end(), patchinfo_lt); 
     467         
     468        GtpVisibility::PatchInfoContainer::iterator visiblePatchIt, 
    477469                        visiblePatchIt_end = visiblePatches->end(); 
    478470 
     
    482474                ++visiblePatchIt) 
    483475        { 
    484                 if (!patchInfo || (patchInfo->GetPatch() != (*visiblePatchIt).GetPatch())) 
     476                if (!patchInfo || (patchInfo->GetSource() != (*visiblePatchIt).GetSource())) 
    485477                { 
    486478                        patchInfo = &(*visiblePatchIt); 
     
    493485 
    494486        // physically delete duplicates 
    495         visiblePatches->erase(std::unique(visiblePatches->begin(), visiblePatches->end(),  
    496                 patchinfo_eq), visiblePatches->end()); 
     487        visiblePatches->erase(std::unique(visiblePatches->begin(), visiblePatches->end(), patchinfo_eq),  
     488                                                  visiblePatches->end()); 
    497489} 
    498490//----------------------------------------------------------------------- 
  • trunk/VUT/Ogre/src/OgrePlatformHierarchyInterface.cpp

    r187 r316  
    8787         
    8888        mRenderSystem->_setWorldMatrix(Ogre::Matrix4::IDENTITY); 
    89         mSceneManager->useRenderableViewProjMode(solidBox); 
     89        mSceneManager->useRenderableViewProjModeWrapper(solidBox); 
    9090         
    9191        // set no depth write, no color, no lighting material 
    92         mSceneManager->setPass(solidBox->getTechnique()->getPass(0)); 
     92        mSceneManager->setPassWrapper(solidBox->getTechnique()->getPass(0)); // HACK! (mySetPass should be setPass) 
    9393        //SetOcclusionPass(); 
    9494 
  • trunk/VUT/Ogre/src/OgrePlatformQueryManager.cpp

    r174 r316  
    2626//----------------------------------------------------------------------- 
    2727void PlatformQueryManager::ComputeFromPointVisibility(const Vector3 &point, 
    28                                InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    29                                InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    30                                    InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     28                               GtpVisibility::NodeInfoContainer *visibleNodes, 
     29                               GtpVisibility::MeshInfoContainer *visibleGeometry, 
     30                                   GtpVisibility::PatchInfoContainer *visiblePatches, 
    3131                               bool relativeVisibility) 
    3232{ 
     
    8686//----------------------------------------------------------------------- 
    8787void PlatformQueryManager::ComputeCameraVisibility(const Camera &camera, 
    88                             InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    89                             InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    90                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches, 
     88                            GtpVisibility::NodeInfoContainer *visibleNodes, 
     89                            GtpVisibility::MeshInfoContainer *visibleGeometry, 
     90                                GtpVisibility::PatchInfoContainer *visiblePatches, 
    9191                            bool relativeVisibility) 
    9292{ 
     
    137137//----------------------------------------------------------------------- 
    138138void PlatformQueryManager::CollectItemBufferResults( 
    139                                 InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    140                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches) 
     139                                GtpVisibility::MeshInfoContainer *visibleGeometry, 
     140                                GtpVisibility::PatchInfoContainer *visiblePatches) 
    141141{ 
    142142        int dimx = 0; 
     
    180180//----------------------------------------------------------------------- 
    181181void PlatformQueryManager::InitItemBuffer( 
    182                                 InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    183                                 InfoContainer<GtpVisibility::PatchInfo> *visiblePatches) 
     182                                GtpVisibility::MeshInfoContainer *visibleGeometry, 
     183                                GtpVisibility::PatchInfoContainer *visiblePatches) 
    184184{ 
    185185        if (mWasInitialised) 
Note: See TracChangeset for help on using the changeset viewer.