OcclusionQuery Class Reference

#include <OcclusionQuery.h>

List of all members.

Public Member Functions

 OcclusionQuery ()
virtual ~OcclusionQuery ()
virtual bool ResultAvailable () const
virtual unsigned int GetQueryResult () const
virtual void BeginQuery ()
virtual void EndQuery ()
unsigned int GetQueryId () const

Static Public Member Functions

static void GenQueries (std::vector< OcclusionQuery * > &queries, const int numQueries)

Protected Member Functions

 OcclusionQuery (const unsigned int idx)

Protected Attributes

unsigned int mId

Static Protected Attributes

static bool sUseArbQueries = true


Detailed Description

This class is an implementation for occlusion queries.
Remarks:
the class encapsulates occlusion query calls.

Definition at line 9 of file OcclusionQuery.h.


Constructor & Destructor Documentation

OcclusionQuery::OcclusionQuery (  ) 

Definition at line 22 of file OcclusionQuery.cpp.

00023 {
00024   GLuint id;
00025 
00026   if (sUseArbQueries) {
00027        glGenQueriesARB(1, &id);
00028   } else {           
00029        glGenOcclusionQueriesNV(1, &id);
00030   }
00031 }

OcclusionQuery::~OcclusionQuery (  )  [virtual]

Definition at line 38 of file OcclusionQuery.cpp.

00039 {
00040   if (sUseArbQueries) {
00041        glDeleteQueriesARB(1, &mId);
00042   } else {
00043        glDeleteOcclusionQueriesNV(1, &mId);
00044   }
00045 }

OcclusionQuery::OcclusionQuery ( const unsigned int  idx  )  [protected]

Definition at line 33 of file OcclusionQuery.cpp.

00033                                                     :
00034   mId(idx)
00035 {}


Member Function Documentation

bool OcclusionQuery::ResultAvailable (  )  const [virtual]

Definition at line 76 of file OcclusionQuery.cpp.

00077 {
00078   GLuint available;
00079   
00080   if (sUseArbQueries) {
00081        glGetQueryObjectuivARB(mId,
00082                                              GL_QUERY_RESULT_AVAILABLE_ARB,
00083                                              &available);
00084        return available == GL_TRUE;
00085   } else {
00086          glGetOcclusionQueryuivNV(mId, GL_PIXEL_COUNT_AVAILABLE_NV, &available);
00087          return available == GL_TRUE;
00088   }
00089 }

unsigned int OcclusionQuery::GetQueryResult (  )  const [virtual]

Definition at line 93 of file OcclusionQuery.cpp.

00094 {
00095   GLuint sampleCount;
00096   
00097   if (sUseArbQueries)       {
00098        glGetQueryObjectuivARB(mId, GL_QUERY_RESULT_ARB, &sampleCount);
00099        return sampleCount;
00100   } else {    
00101        glGetOcclusionQueryuivNV(mId, GL_PIXEL_COUNT_NV, &sampleCount);
00102        return sampleCount;
00103   }
00104 }

void OcclusionQuery::BeginQuery (  )  [virtual]

Definition at line 49 of file OcclusionQuery.cpp.

00050 {
00051        if (sUseArbQueries) {
00052          glBeginQueryARB(GL_SAMPLES_PASSED_ARB, mId);
00053        } else {
00054          glBeginOcclusionQueryNV(mId);
00055        }
00056 }

void OcclusionQuery::EndQuery (  )  [virtual]

Definition at line 59 of file OcclusionQuery.cpp.

00060 {
00061        if (sUseArbQueries) {
00062          glEndQueryARB(GL_SAMPLES_PASSED_ARB);
00063        } else {
00064          glEndOcclusionQueryNV();  
00065        }
00066 }

void OcclusionQuery::GenQueries ( std::vector< OcclusionQuery * > &  queries,
const int  numQueries 
) [static]

Definition at line 108 of file OcclusionQuery.cpp.

00109 {
00110   //Debug<<"Generating queries "<<numQueries<<" occlussion queries"<<endl;
00111   if ((int)queries.size() < numQueries) {
00112        const int n = numQueries - (int)queries.size();
00113        GLuint *newQueries = new GLuint[n];
00114 
00115        LOG(wxString::Format(wxT("Generating %i occlusion queries."), n));
00116        
00117        if (sUseArbQueries) {
00118          glGenQueriesARB(n, newQueries);
00119        } else {
00120          glGenOcclusionQueriesNV(n, newQueries);
00121        }
00122        
00123        for (int i = 0; i < n; ++ i) {
00124          queries.push_back(new OcclusionQuery(newQueries[i]));
00125        }
00126        
00127        delete newQueries;
00128   }
00129 }

unsigned int OcclusionQuery::GetQueryId (  )  const

Definition at line 70 of file OcclusionQuery.cpp.

00071 {
00072   return mId;
00073 }


Member Data Documentation

bool OcclusionQuery::sUseArbQueries = true [static, protected]

Definition at line 30 of file OcclusionQuery.h.

unsigned int OcclusionQuery::mId [protected]

Definition at line 32 of file OcclusionQuery.h.


The documentation for this class was generated from the following files:

Generated on Tue Mar 10 14:41:38 2009 for VRUT by  doxygen 1.5.5