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
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;
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 */
Definition display.h:12
unsigned getResY() const
Definition display.h:26
std::chrono::steady_clock::time_point lastFrame
Definition display.h:47
unsigned framesPerSecond
Definition display.h:45
glm::ivec2 getRes() const
Definition display.h:27
bool unlimited
Definition display.h:44
virtual void setFrameLimit(unsigned fps)
Definition display.h:29
virtual void throttle()
Definition display.h:49
Display(glm::ivec2 res)
Definition display.h:16
std::chrono::microseconds microsPerFrame
Definition display.h:46
glm::ivec2 resolution
Definition display.h:43
virtual void loop()
Definition display.h:36
unsigned getResX() const
Definition display.h:25
A drawable graphic.
Definition id.h:10