globjects  2.0.0.630135941c42
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches
Query.h
Go to the documentation of this file.
1
2#pragma once
3
4
5#include <chrono>
6
7#include <glbinding/gl/types.h>
8
9#include <globjects/globjects_api.h>
10#include <globjects/Object.h>
12
13
14namespace globjects
15{
16
17
67class GLOBJECTS_API Query : public Object, public Instantiator<Query>
68{
69public:
71
72 virtual ~Query();
73
74 static std::unique_ptr<Query> fromId(gl::GLuint id);
75
76 static std::unique_ptr<Query> current(gl::GLenum target);
77 static std::unique_ptr<Query> timestamp();
78
79 static gl::GLint get(gl::GLenum target, gl::GLenum pname);
80 static gl::GLint getIndexed(gl::GLenum target, gl::GLuint index, gl::GLenum pname);
81
82 static gl::GLint getCounterBits(gl::GLenum target);
83
84 void begin(gl::GLenum target) const;
85 void end(gl::GLenum target) const;
86
87 void beginIndexed(gl::GLenum target, gl::GLuint index) const;
88 void endIndexed(gl::GLenum target, gl::GLuint index) const;
89
90 static bool isQuery(gl::GLuint id);
91
92 gl::GLuint get(gl::GLenum pname) const;
93 gl::GLuint64 get64(gl::GLenum pname) const;
94
95 bool resultAvailable() const;
96 void wait() const;
97 void wait(const std::chrono::duration<int, std::nano> & timeout) const;
98
99 gl::GLuint waitAndGet(gl::GLenum pname) const;
100 gl::GLuint64 waitAndGet64(gl::GLenum pname) const;
101
102 gl::GLuint waitAndGet(const std::chrono::duration<int, std::nano> & timeout, gl::GLenum pname) const;
103 gl::GLuint64 waitAndGet64(const std::chrono::duration<int, std::nano> & timeout, gl::GLenum pname) const;
104
105 gl::GLuint waitAndGet(gl::GLenum pname, const std::chrono::duration<int, std::nano> & timeout) const;
106 gl::GLuint64 waitAndGet64(gl::GLenum pname, const std::chrono::duration<int, std::nano> & timeout) const;
107
108 void counter() const;
109
110 virtual gl::GLenum objectType() const override;
111
112
113protected:
114 Query(std::unique_ptr<IDResource> && resource);
115
116 static gl::GLuint genQuery();
117
118 void counter(gl::GLenum target) const;
119};
120
121
122} // namespace globjects
CRTP for creating objects similar to std::make_unique.
Definition Instantiator.h:22
Superclass of all wrapped OpenGL objects.
Definition Object.h:28
Encapsulates a GL Query object.
Definition Query.h:68
void counter() const
static std::unique_ptr< Query > timestamp()
void end(gl::GLenum target) const
gl::GLuint waitAndGet(gl::GLenum pname, const std::chrono::duration< int, std::nano > &timeout) const
Query(std::unique_ptr< IDResource > &&resource)
static bool isQuery(gl::GLuint id)
virtual gl::GLenum objectType() const override
static gl::GLint getIndexed(gl::GLenum target, gl::GLuint index, gl::GLenum pname)
static std::unique_ptr< Query > current(gl::GLenum target)
static gl::GLint get(gl::GLenum target, gl::GLenum pname)
gl::GLuint64 waitAndGet64(const std::chrono::duration< int, std::nano > &timeout, gl::GLenum pname) const
static gl::GLuint genQuery()
gl::GLuint64 get64(gl::GLenum pname) const
gl::GLuint waitAndGet(const std::chrono::duration< int, std::nano > &timeout, gl::GLenum pname) const
static gl::GLint getCounterBits(gl::GLenum target)
void endIndexed(gl::GLenum target, gl::GLuint index) const
gl::GLuint64 waitAndGet64(gl::GLenum pname) const
gl::GLuint get(gl::GLenum pname) const
virtual ~Query()
void wait(const std::chrono::duration< int, std::nano > &timeout) const
void begin(gl::GLenum target) const
void wait() const
static std::unique_ptr< Query > fromId(gl::GLuint id)
gl::GLuint64 waitAndGet64(gl::GLenum pname, const std::chrono::duration< int, std::nano > &timeout) const
gl::GLuint waitAndGet(gl::GLenum pname) const
bool resultAvailable() const
void beginIndexed(gl::GLenum target, gl::GLuint index) const
void counter(gl::GLenum target) const
Contains all the classes that wrap OpenGL functionality.