]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/query.cpp
Move all OpenGL-specific code to a separate directory
[libs/gl.git] / source / core / query.cpp
index a6d77eda0b604863fce53f418f31c47edbb93108..f075cada23c7f9d4ed577d37b1b51c2baabb651c 100644 (file)
@@ -1,50 +1,16 @@
-#include <stdexcept>
-#include <msp/gl/extensions/arb_occlusion_query.h>
-#include <msp/gl/extensions/arb_occlusion_query2.h>
 #include "query.h"
 #include "renderer.h"
 
-using namespace std;
-
 namespace Msp {
 namespace GL {
 
 QueryPool::QueryPool(QueryType t, unsigned s):
-       type(t),
-       gl_type(get_gl_query_type(type))
+       QueryPoolBackend(t),
+       type(t)
 {
-       if(type==OCCLUSION_QUERY)
-       {
-               static Require req(ARB_occlusion_query);
-               static Require req2(ARB_occlusion_query2);
-       }
-
        resize(s);
 }
 
-QueryPool::~QueryPool()
-{
-       glDeleteQueries(queries.size(), queries.data());
-}
-
-void QueryPool::resize(unsigned s)
-{
-       if(s<queries.size())
-               glDeleteQueries(queries.size()-s, queries.data()+s);
-
-       unsigned old_size = queries.size();
-       queries.resize(s);
-       if(s>old_size)
-               glGenQueries(s-old_size, queries.data()+old_size);
-}
-
-unsigned QueryPool::get_result(unsigned i) const
-{
-       unsigned result = 0;
-       glGetQueryObjectuiv(queries[i], GL_QUERY_RESULT, &result);
-       return result;
-}
-
 
 QueryPool::Activate::Activate(Renderer &r, const QueryPool &p, unsigned i):
        renderer(r),
@@ -59,15 +25,5 @@ QueryPool::Activate::~Activate()
        renderer.end_query(pool, index);
 }
 
-
-unsigned get_gl_query_type(QueryType t)
-{
-       switch(t)
-       {
-       case OCCLUSION_QUERY: return GL_ANY_SAMPLES_PASSED;
-       default: throw invalid_argument("get_gl_query_type");
-       }
-}
-
 } // namespace GL
 } // namespace Msp