Browse Source

Don't define Query constructors & destructors in header.

AbstractQuery is virtual class, thus the constructors & destructors are
heavier than it looks.
pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
4bb919e138
  1. 24
      src/Query.cpp
  2. 24
      src/Query.h

24
src/Query.cpp

@ -26,6 +26,20 @@
namespace Magnum {
AbstractQuery::AbstractQuery() {
/** @todo Get some extension wrangler instead to avoid undeclared glGenQueries() on ES2 */
#ifndef MAGNUM_TARGET_GLES2
glGenQueries(1, &_id);
#endif
}
AbstractQuery::~AbstractQuery() {
/** @todo Get some extension wrangler instead to avoid undeclared glGenQueries() on ES2 */
#ifndef MAGNUM_TARGET_GLES2
glDeleteQueries(1, &_id);
#endif
}
bool AbstractQuery::resultAvailable() {
/** @todo Re-enable when extension wrangler is available for ES */
#ifndef MAGNUM_TARGET_GLES2
@ -79,6 +93,10 @@ template<> Long AbstractQuery::result<Long>() {
}
#endif
Query::Query(): target(nullptr) {}
Query::~Query() { delete target; }
#ifndef MAGNUM_TARGET_GLES2
void Query::begin(Query::Target target) {
glBeginQuery(static_cast<GLenum>(target), id());
@ -94,6 +112,10 @@ void Query::end() {
}
#endif
SampleQuery::SampleQuery(): target(nullptr) {}
SampleQuery::~SampleQuery() { delete target; }
void SampleQuery::begin(SampleQuery::Target target) {
/** @todo Re-enable when extension wrangler is available for ES */
#ifndef MAGNUM_TARGET_GLES2
@ -113,4 +135,6 @@ void SampleQuery::end() {
target = nullptr;
}
TimeQuery::TimeQuery() = default;
}

24
src/Query.h

@ -49,12 +49,7 @@ class MAGNUM_EXPORT AbstractQuery {
* Generates one OpenGL query.
* @see @fn_gl{GenQueries}
*/
inline explicit AbstractQuery() {
/** @todo Get some extension wrangler instead to avoid undeclared glGenQueries() on ES2 */
#ifndef MAGNUM_TARGET_GLES2
glGenQueries(1, &_id);
#endif
}
explicit AbstractQuery();
/**
* @brief Destructor
@ -62,12 +57,7 @@ class MAGNUM_EXPORT AbstractQuery {
* Deletes assigned OpenGL query.
* @see @fn_gl{DeleteQueries}
*/
virtual inline ~AbstractQuery() {
/** @todo Get some extension wrangler instead to avoid undeclared glGenQueries() on ES2 */
#ifndef MAGNUM_TARGET_GLES2
glDeleteQueries(1, &_id);
#endif
}
virtual ~AbstractQuery() = 0;
/** @brief OpenGL query ID */
inline GLuint id() const { return _id; }
@ -163,9 +153,9 @@ class MAGNUM_EXPORT Query: public AbstractQuery {
#endif
};
inline explicit Query(): target(nullptr) {}
explicit Query();
inline ~Query() { delete target; }
~Query();
/**
* @brief Begin query
@ -294,9 +284,9 @@ class MAGNUM_EXPORT SampleQuery: public AbstractQuery {
};
#endif
inline explicit SampleQuery(): target(nullptr) {}
explicit SampleQuery();
inline ~SampleQuery() { delete target; }
~SampleQuery();
/** @copydoc Query::begin() */
void begin(Target target);
@ -369,7 +359,7 @@ Using this query results in fewer OpenGL calls when doing more measures.
*/
class TimeQuery: public AbstractQuery {
public:
explicit TimeQuery() = default;
explicit TimeQuery();
/**
* @brief Query timestamp

Loading…
Cancel
Save