#include <OcclusionQuery.h>
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 |
Definition at line 9 of file OcclusionQuery.h.
| 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] |
| 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 |
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.
1.5.5