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

OcclusionCullGLTraverser.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 "nvtraverser/GLTraverser.h"
00018 
00019 namespace nvtraverser
00020 {
00022 
00024   class OcclusionCullGLTraverser : public GLTraverser
00025   {
00026     public:
00028       NVSG_API OcclusionCullGLTraverser(void);
00029 
00030       NVSG_API std::vector<GLuint> * getQueries( void );
00031 #if defined( _DEBUG )
00032       NVSG_API std::vector<const nvsg::Drawable *> * getDrawables( void );
00033 #endif
00034 
00035     protected:
00037       NVSG_API virtual ~OcclusionCullGLTraverser(void);
00038 
00039       NVSG_API virtual bool preTraverseRoot( const nvsg::SimpleCamera *p, const nvsg::Node *root );
00040       NVSG_API virtual void postTraverseRoot( const nvsg::SimpleCamera *p, const nvsg::Node *root );
00041 
00042       NVSG_API virtual void handleDirectedLight( const nvsg::DirectedLight *p);
00043       NVSG_API virtual void handlePointLight( const nvsg::PointLight *p );
00044       NVSG_API virtual void handleSpotLight( const nvsg::SpotLight *p );
00045 
00046       NVSG_API virtual void handleQuads( const nvsg::Quads *p );
00047       NVSG_API virtual void handleAnimatedQuads( const nvsg::AnimatedQuads * p );
00048       NVSG_API virtual void handleQuadStrips( const nvsg::QuadStrips *p );
00049       NVSG_API virtual void handleTriangles( const nvsg::Triangles *p );
00050       NVSG_API virtual void handleAnimatedTriangles( const nvsg::AnimatedTriangles * p );
00051       NVSG_API virtual void handleSkinnedTriangles( const nvsg::SkinnedTriangles * p );
00052       NVSG_API virtual void handleTriStrips( const nvsg::TriStrips *p );
00053 
00054       NVSG_API virtual void handleStateSet( const nvsg::StateSet *p );
00055       NVSG_API virtual void handleCgFx( const nvsg::CgFx *p );
00056       NVSG_API virtual void handleFaceAttribute( const nvsg::FaceAttribute *p );
00057       NVSG_API virtual void handleMaterial( const nvsg::Material *p );
00058       NVSG_API virtual void handleTextureAttribute( const nvsg::TextureAttribute *p );
00059       NVSG_API virtual void handleTextureAttributeItem( const nvsg::TextureAttributeItem * p, size_t tu );
00060 
00061       NVSG_API virtual void handleJitterCamera( const nvsg::JitterCamera *p, const nvsg::Node *root );
00062       NVSG_API virtual void handleStereoCamera( const nvsg::StereoCamera *p, const nvsg::Node *root );
00063 
00064       NVSG_API virtual void handleHighlightBox( const nvsg::HighlightBox *p, const nvsg::GeoSet *g );
00065       NVSG_API virtual void handleHighlightEdges( const nvsg::HighlightEdges *p, const nvsg::GeoSet *geoSet );
00066 
00067     private:
00068       GLuint genQueryId( const nvsg::Drawable *p );
00069 
00070     private:
00071       std::vector<GLuint>  m_queries;
00072 #if defined( _DEBUG )
00073       std::vector<const nvsg::Drawable *> m_drawables;
00074 #endif
00075   };
00076 
00077   inline std::vector<GLuint> * OcclusionCullGLTraverser::getQueries( void )
00078   {
00079     return( &m_queries );
00080   }
00081 
00082 #if defined( _DEBUG )
00083   inline std::vector<const nvsg::Drawable *> * OcclusionCullGLTraverser::getDrawables( void )
00084   {
00085     return( &m_drawables );
00086   }
00087 #endif
00088 }

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