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
29
virtual
void
setFrameLimit
(
unsigned
fps)
30
{
31
framesPerSecond
= fps;
32
microsPerFrame
= std::chrono::microseconds(
int
(1000000.0 /
double
(fps)));
33
unlimited
=
false
;
34
}
35
36
virtual
void
loop
()
37
{
38
throttle
();
39
}
40
41
protected
:
42
43
glm::ivec2
resolution
;
44
bool
unlimited
;
45
unsigned
framesPerSecond
;
46
std::chrono::microseconds
microsPerFrame
;
47
std::chrono::steady_clock::time_point
lastFrame
;
48
49
virtual
void
throttle
()
50
{
51
if
(
unlimited
)
52
{
53
return
;
54
}
55
std::chrono::steady_clock::time_point t = std::chrono::steady_clock::now();
56
std::chrono::microseconds elapsed = std::chrono::duration_cast<std::chrono::microseconds>(t-
lastFrame
);
57
if
(elapsed <
microsPerFrame
)
58
{
59
std::this_thread::sleep_for(
microsPerFrame
-elapsed);
60
}
61
lastFrame
= std::chrono::steady_clock::now();
62
}
63
64
};
65
}
66
67
#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:47
jGL::Display::framesPerSecond
unsigned framesPerSecond
Definition
display.h:45
jGL::Display::getRes
glm::ivec2 getRes() const
Definition
display.h:27
jGL::Display::unlimited
bool unlimited
Definition
display.h:44
jGL::Display::setFrameLimit
virtual void setFrameLimit(unsigned fps)
Definition
display.h:29
jGL::Display::throttle
virtual void throttle()
Definition
display.h:49
jGL::Display::Display
Display(glm::ivec2 res)
Definition
display.h:16
jGL::Display::microsPerFrame
std::chrono::microseconds microsPerFrame
Definition
display.h:46
jGL::Display::resolution
glm::ivec2 resolution
Definition
display.h:43
jGL::Display::loop
virtual void loop()
Definition
display.h:36
jGL::Display::getResX
unsigned getResX() const
Definition
display.h:25
jGL
A drawable graphic.
Definition
id.h:10
Generated by
1.9.8