Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

FrustumCullTraverser.h

Go to the documentation of this file.
00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
00011 
00012 #pragma once
00013 
00015 #include "nvsgcommon.h"
00016 
00017 #include "nvsg/CullData.h"
00018 #include "nvtraverser/CullTraverser.h"
00019 
00020 namespace nvtraverser
00021 {
00023 
00026   class FrustumCullTraverser : public CullTraverser
00027   {
00028     public:
00030       NVSG_API FrustumCullTraverser(void);
00031 
00032     protected:
00034       NVSG_API virtual ~FrustumCullTraverser(void);
00035         
00036       // preTraverseRoot override
00037       NVSG_API virtual bool preTraverseRoot( const nvsg::SimpleCamera *p, const nvsg::Node *root );
00038 
00039       //  Reimplemented from CullTraverser
00040       NVSG_API virtual nvsg::CullCode cullCode( const nvsg::Drawable *p ) const;
00041       NVSG_API virtual nvsg::CullCode cullCode( const nvsg::Node *p ) const;
00042 
00043       NVSG_API virtual bool preTraverseTransform( const nvsg::Transform *p    
00044                                                 );
00045       NVSG_API virtual void postTraverseTransform( const nvsg::Transform *p   
00046                                                  );
00047 
00048     private:
00049       //  Determine the CullCode based on a sphere
00050       nvsg::CullCode _cullCode( const nvmath::Sphere3f &sphere ) const;
00051 
00052     private:
00053       const nvsg::SimpleCamera  * m_camera;
00054       mutable float               m_scaleFactor;
00055   };
00056 
00057 }
00058 

Generated on Tue Mar 1 13:19:19 2005 for NVSGSDK by NVIDIA