jGL
Loading...
Searching...
No Matches
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
9namespace jGL
10{
11 class Display
12 {
13
14 public:
15
16 Display(glm::ivec2 res)
17 :
18 resolution(res),
19 unlimited(true),
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;
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 */
Definition display.h:12
unsigned getResY() const
Definition display.h:26
std::chrono::steady_clock::time_point lastFrame
Definition display.h:48
unsigned framesPerSecond
Definition display.h:46
glm::ivec2 getRes() const
Definition display.h:27
bool unlimited
Definition display.h:45
virtual void setFrameLimit(unsigned fps)
Definition display.h:30
virtual void throttle()
Definition display.h:50
virtual void setResolution(glm::ivec2 wh)
Definition display.h:28
Display(glm::ivec2 res)
Definition display.h:16
std::chrono::microseconds microsPerFrame
Definition display.h:47
glm::ivec2 resolution
Definition display.h:44
virtual void loop()
Definition display.h:37
unsigned getResX() const
Definition display.h:25
A drawable graphic.
Definition id.h:10