jGL
Loading...
Searching...
No Matches
include
jGL
Display
display.h
Go to the documentation of this file.
1
#ifndef DISPLAY_H
2
#define DISPLAY_H
3
4
#include <glm/glm.hpp>
5
#include <chrono>
6
#include <thread>
7
#include <iostream>
8
9
namespace
jGL
10
{
11
class
Display
12
{
13
14
public
:
15
16
Display
(glm::ivec2 res)
17
:
18
resolution
(res),
19
unlimited
(true),
20
framesPerSecond
(-1),
21
microsPerFrame
(0),
22
lastFrame
(std::chrono::steady_clock::now())
23
{}
24
25
unsigned
getResX
()
const
{
return
resolution
.x; }
26
unsigned
getResY
()
const
{
return
resolution
.y; }
27
glm::ivec2
getRes
()
const
{
return
resolution
; }
28
virtual
void
setResolution
(glm::ivec2 wh) {
resolution
= wh; }
29
30
virtual
void
setFrameLimit
(
unsigned
fps)
31
{
32
framesPerSecond
= fps;
33
microsPerFrame
= std::chrono::microseconds(
int
(1000000.0 /
double
(fps)));
34
unlimited
=
false
;
35
}
36
37
virtual
void
loop
()
38
{
39
throttle
();
40
}
41
42
protected
:
43
44
glm::ivec2
resolution
;
45
bool
unlimited
;
46
unsigned
framesPerSecond
;
47
std::chrono::microseconds
microsPerFrame
;
48
std::chrono::steady_clock::time_point
lastFrame
;
49
50
virtual
void
throttle
()
51
{
52
if
(
unlimited
)
53
{
54
return
;
55
}
56
std::chrono::steady_clock::time_point t = std::chrono::steady_clock::now();
57
std::chrono::microseconds elapsed = std::chrono::duration_cast<std::chrono::microseconds>(t-
lastFrame
);
58
if
(elapsed <
microsPerFrame
)
59
{
60
std::this_thread::sleep_for(
microsPerFrame
-elapsed);
61
}
62
lastFrame
= std::chrono::steady_clock::now();
63
}
64
65
};
66
}
67
68
#endif
/* DISPLAY_H */
jGL::Display
Definition
display.h:12
jGL::Display::getResY
unsigned getResY() const
Definition
display.h:26
jGL::Display::lastFrame
std::chrono::steady_clock::time_point lastFrame
Definition
display.h:48
jGL::Display::framesPerSecond
unsigned framesPerSecond
Definition
display.h:46
jGL::Display::getRes
glm::ivec2 getRes() const
Definition
display.h:27
jGL::Display::unlimited
bool unlimited
Definition
display.h:45
jGL::Display::setFrameLimit
virtual void setFrameLimit(unsigned fps)
Definition
display.h:30
jGL::Display::throttle
virtual void throttle()
Definition
display.h:50
jGL::Display::setResolution
virtual void setResolution(glm::ivec2 wh)
Definition
display.h:28
jGL::Display::Display
Display(glm::ivec2 res)
Definition
display.h:16
jGL::Display::microsPerFrame
std::chrono::microseconds microsPerFrame
Definition
display.h:47
jGL::Display::resolution
glm::ivec2 resolution
Definition
display.h:44
jGL::Display::loop
virtual void loop()
Definition
display.h:37
jGL::Display::getResX
unsigned getResX() const
Definition
display.h:25
jGL
A drawable graphic.
Definition
id.h:10
Generated by
1.9.8