-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
78 lines (60 loc) · 2.45 KB
/
Copy pathmain.cpp
File metadata and controls
78 lines (60 loc) · 2.45 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
#include <Window.h>
#include <InputHandler.h>
#include "Scene.h"
#include <Model.h>
#define NR_LIGHTS 10
std::vector<glm::vec3> genModelPositions(int depth);
int main() {
if (std::filesystem::current_path().string().ends_with("cmake-build-debug")){
std::filesystem::current_path("..");
}
std::cout << std::filesystem::current_path() << '\n';
// Create SDL2 Window; set up events and text input
Window window{}; SDL_Event e; SDL_StartTextInput();
// Configure scene;
Scene scene;
Shader geometryShader{"shaders/g_buffer.vs", "shaders/g_buffer.fs"};
Shader lightShader{"shaders/light_buffer.vs", "shaders/light_buffer.fs"};
Shader lightCubeShader{"shaders/light_cube.vs", "shaders/light_cube.fs"};
Shader debugShader("shaders/fbo_debug.vs", "shaders/fbo_debug.fs");
Shader forwardRenderShader("shaders/forward_render.vs", "shaders/forward_render.fs");
Shader textShader("shaders/text.vs", "shaders/text.fs");
Shader computeShader("shaders/compute.glsl");
scene.geometryShader = geometryShader;
scene.lightShader = lightShader;
scene.lightCubeShader = lightCubeShader;
scene.debugShader = debugShader;
scene.forwardRenderShader = forwardRenderShader;
scene.textShader = textShader;
scene.computeShader = computeShader;
// importing backpack model and generating light cubes
Model backpackModel{"resources/objects/backpack/backpack.obj"};
scene.addModel( backpackModel);
Object obj{};
scene.addObject(obj);
std::vector<glm::vec3> modelPositions = genModelPositions(3);
scene.setModelPosition(0, modelPositions);
// for deferred rendering
scene.configureGBuffer();
scene.configureLighting(NR_LIGHTS);
scene.configureText();
// main program loop
while(true){
InputHandler::handleEvent(e, scene);
scene.render();
scene.renderHUD(window.framerate);
SDL_GL_SwapWindow(window.get());
window.updateFrameRate();
}
}
std::vector<glm::vec3> genModelPositions(int depth) {
std::vector<glm::vec3> modelPositions;
for(int i = 1; i <= depth; ++i){
auto offset = static_cast<float>(i);
modelPositions.emplace_back(-2.0f, 2.0f, -5.0f*offset);
modelPositions.emplace_back(2.0f, 2.0f, -5.0f*offset);
modelPositions.emplace_back(-2.0f, -2.0f, -5.0f*offset);
modelPositions.emplace_back(2.0f, -2.0f, -5.0f*offset);
}
return modelPositions;
}