forked from SurajSharma90/OpenGL-C---Tutorials
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGame.h
More file actions
120 lines (97 loc) · 2.11 KB
/
Game.h
File metadata and controls
120 lines (97 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#pragma once
#include "libs.h"
#include "Camera.h"
//ZOOOOOOOOOOOM IN BEFORE RECORDING!
//ENUMERATIONS
enum shader_enum { SHADER_CORE_PROGRAM = 0 };
enum texture_enum { TEX_PUSHEEN = 0, TEX_PUSHEEN_SPECULAR, TEX_CONTAINER, TEX_CONTAINER_SPECULAR };
enum material_enum { MAT_1 = 0 };
enum mesh_enum { MESH_QUAD = 0 };
class Game
{
private:
//Variables
//Window
GLFWwindow* window;
const int WINDOW_WIDTH;
const int WINDOW_HEIGHT;
int framebufferWidth;
int framebufferHeight;
//OpenGL Context
const int GL_VERSION_MAJOR;
const int GL_VERSION_MINOR;
//Delta time
float dt;
float curTime;
float lastTime;
//Mouse Input
double lastMouseX;
double lastMouseY;
double mouseX;
double mouseY;
double mouseOffsetX;
double mouseOffsetY;
bool firstMouse;
//Camera
Camera camera;
//Matrices
glm::mat4 ViewMatrix;
glm::vec3 camPosition;
glm::vec3 worldUp;
glm::vec3 camFront;
glm::mat4 ProjectionMatrix;
float fov;
float nearPlane;
float farPlane;
//Shaders
std::vector<Shader*> shaders;
//Textures
std::vector<Texture*> textures;
//Materials
std::vector<Material*> materials;
//Models
std::vector<Model*> models;
//Lights
std::vector<PointLight*> pointLights;
//Private functions
void initGLFW();
void initWindow(
const char* title,
bool resizable
);
void initGLEW(); //AFTER CONTEXT CREATION!!!
void initOpenGLOptions();
void initMatrices();
void initShaders();
void initTextures();
void initMaterials();
void initOBJModels();
void initModels();
void initPointLights();
void initLights();
void initUniforms();
void updateUniforms();
//Static variables
public:
//Constructors / Destructors
Game(
const char* title,
const int WINDOW_WIDTH, const int WINDOW_HEIGHT,
const int GL_VERSION_MAJOR, const int GL_VERSION_MINOR,
bool resizable
);
virtual ~Game();
//Accessors
int getWindowShouldClose();
//Modifiers
void setWindowShouldClose();
//Functions
void updateDt();
void updateMouseInput();
void updateKeyboardInput();
void updateInput();
void update();
void render();
//Static functions
static void framebuffer_resize_callback(GLFWwindow* window, int fbW, int fbH);
};