globjects  2.0.0.4363356ae2ef
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches
Sync.h
Go to the documentation of this file.
1
2#pragma once
3
4
5#include <memory>
6
7#include <glbinding/gl/types.h>
8
9#include <globjects/globjects_api.h>
10
12
13
14namespace globjects
15{
16
17
18class GLOBJECTS_API Sync : public Instantiator<Sync>
19{
20 friend class AbstractObjectNameImplementation;
21
22
23public:
24 static std::unique_ptr<Sync> fence(gl::GLenum condition);
25
26 Sync(gl::GLsync sync);
27 virtual ~Sync();
28
29 gl::GLenum clientWait(gl::SyncObjectMask flags, gl::GLuint64 timeout);
30 void wait(gl::GLuint64 timeout);
31
32 void get(gl::GLenum pname, gl::GLsizei bufsize, gl::GLsizei * length, gl::GLint * values);
33 gl::GLint get(gl::GLenum pname);
34
35 gl::GLsync sync() const;
36
37
38protected:
39 void wait(gl::UnusedMask flags, gl::GLuint64 timeout);
40
41 static gl::GLsync fenceSync(gl::GLenum condition, gl::UnusedMask flags);
42 static std::unique_ptr<Sync> fence(gl::GLenum condition, gl::UnusedMask flags);
43
44
45protected:
46 gl::GLsync m_sync;
47 mutable void * m_objectLabelState;
48};
49
50
51} // namespace globjects
CRTP for creating objects similar to std::make_unique.
Definition: Instantiator.h:22
Definition: Sync.h:19
void * m_objectLabelState
Definition: Sync.h:47
gl::GLenum clientWait(gl::SyncObjectMask flags, gl::GLuint64 timeout)
virtual ~Sync()
static std::unique_ptr< Sync > fence(gl::GLenum condition, gl::UnusedMask flags)
void get(gl::GLenum pname, gl::GLsizei bufsize, gl::GLsizei *length, gl::GLint *values)
gl::GLint get(gl::GLenum pname)
static std::unique_ptr< Sync > fence(gl::GLenum condition)
static gl::GLsync fenceSync(gl::GLenum condition, gl::UnusedMask flags)
gl::GLsync sync() const
void wait(gl::UnusedMask flags, gl::GLuint64 timeout)
Sync(gl::GLsync sync)
void wait(gl::GLuint64 timeout)
gl::GLsync m_sync
Definition: Sync.h:46
Contains all the classes that wrap OpenGL functionality.