bool AbstractQuery::resultAvailable() { GLuint result; #ifndef MAGNUM_TARGET_GLES2 glGetQueryObjectuiv(_id, GL_QUERY_RESULT_AVAILABLE, &result); #else glGetQueryObjectuivEXT(_id, GL_QUERY_RESULT_AVAILABLE_EXT, &result); #endif return result == GL_TRUE; }
template<> UnsignedInt AbstractQuery::result<UnsignedInt>() { UnsignedInt result; #ifndef MAGNUM_TARGET_GLES2 glGetQueryObjectuiv(_id, GL_QUERY_RESULT, &result); #else glGetQueryObjectuivEXT(_id, GL_QUERY_RESULT_EXT, &result); #endif return result; }
//------------------------------------------------------------------ bool GLES2HardwareOcclusionQuery::pullOcclusionQuery( unsigned int* NumOfFragments ) { if(getGLSupport()->checkExtension("GL_EXT_occlusion_query_boolean") || gleswIsSupported(3, 0)) { OGRE_CHECK_GL_ERROR(glGetQueryObjectuivEXT(mQueryID, GL_QUERY_RESULT_EXT, (GLuint*)NumOfFragments)); mPixelCount = *NumOfFragments; return true; } else return false; }
//------------------------------------------------------------------ bool GLES2HardwareOcclusionQuery::pullOcclusionQuery( unsigned int* NumOfFragments ) { #ifdef GL_EXT_occlusion_query_boolean glGetQueryObjectuivEXT(mQueryID, GL_QUERY_RESULT_EXT, (GLuint*)NumOfFragments); GL_CHECK_ERROR; mPixelCount = *NumOfFragments; return true; #else return false; #endif }
//------------------------------------------------------------------ bool GLES2HardwareOcclusionQuery::pullOcclusionQuery( unsigned int* NumOfFragments ) { #ifdef GL_EXT_occlusion_query_boolean OGRE_IF_IOS_VERSION_IS_GREATER_THAN(5.0) OGRE_CHECK_GL_ERROR(glGetQueryObjectuivEXT(mQueryID, GL_QUERY_RESULT_EXT, (GLuint*)NumOfFragments)); mPixelCount = *NumOfFragments; return true; #else return false; #endif }
//------------------------------------------------------------------ bool GLES2HardwareOcclusionQuery::isStillOutstanding(void) { GLuint available = GL_FALSE; if(getGLSupport()->checkExtension("GL_EXT_occlusion_query_boolean") || gleswIsSupported(3, 0)) { OGRE_CHECK_GL_ERROR(glGetQueryObjectuivEXT(mQueryID, GL_QUERY_RESULT_AVAILABLE_EXT, &available)); } // GL_TRUE means a wait would occur return !(available == GL_TRUE); }
//------------------------------------------------------------------ bool GLES2HardwareOcclusionQuery::isStillOutstanding(void) { GLuint available = GL_FALSE; #ifdef GL_EXT_occlusion_query_boolean glGetQueryObjectuivEXT(mQueryID, GL_QUERY_RESULT_AVAILABLE_EXT, &available); GL_CHECK_ERROR; #endif // GL_TRUE means a wait would occur return !(available == GL_TRUE); }
//------------------------------------------------------------------ bool GLES2HardwareOcclusionQuery::isStillOutstanding(void) { GLuint available = GL_FALSE; #ifdef GL_EXT_occlusion_query_boolean OGRE_IF_IOS_VERSION_IS_GREATER_THAN(5.0) OGRE_CHECK_GL_ERROR(glGetQueryObjectuivEXT(mQueryID, GL_QUERY_RESULT_AVAILABLE_EXT, &available)); #endif // GL_TRUE means a wait would occur return !(available == GL_TRUE); }
template<> UnsignedInt AbstractQuery::result<UnsignedInt>() { CORRADE_ASSERT(!target, "AbstractQuery::result(): the query is currently running", {}); /** @todo Re-enable when extension loader is available for ES */ UnsignedInt result; #ifndef MAGNUM_TARGET_GLES2 glGetQueryObjectuiv(_id, GL_QUERY_RESULT, &result); #elif defined(CORRADE_TARGET_NACL) glGetQueryObjectuivEXT(_id, GL_QUERY_RESULT_EXT, &result); #else CORRADE_INTERNAL_ASSERT(false); #endif return result; }
bool AbstractQuery::resultAvailable() { CORRADE_ASSERT(!target, "AbstractQuery::resultAvailable(): the query is currently running", false); /** @todo Re-enable when extension loader is available for ES */ GLuint result; #ifndef MAGNUM_TARGET_GLES2 glGetQueryObjectuiv(_id, GL_QUERY_RESULT_AVAILABLE, &result); #elif defined(CORRADE_TARGET_NACL) glGetQueryObjectuivEXT(_id, GL_QUERY_RESULT_AVAILABLE_EXT, &result); #else CORRADE_INTERNAL_ASSERT(false); #endif return result == GL_TRUE; }