-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
70 lines (53 loc) · 2.2 KB
/
main.cpp
File metadata and controls
70 lines (53 loc) · 2.2 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
#include <Window.hpp>
#include <TriMesh.hpp>
#include <Shader.hpp>
#include <Camera.hpp>
#include <SphereMesh.hpp>
#include <Region.hpp>
#include <YAMLUtils.hpp>
#include <iostream>
#include <filesystem>
Renderer::TriMesh* mesh;
Renderer::SphereMesh* sm;
Renderer::Shader* sphereShader;
Renderer::Shader* mainShader;
bool loadCachedResult() {
if (std::filesystem::exists(".cache")) {
std::filesystem::path filePath = std::filesystem::absolute(".cache");
std::string referenceMeshPath = getYAMLRenderableMeshPath(filePath);
mesh = new Renderer::TriMesh(referenceMeshPath, mainShader);
sm = new Renderer::SphereMesh(mesh, sphereShader);
sm->loadFromYaml(filePath);
return true;
}
return false;
}
int main()
{
Renderer::Region::initialize();
auto* mainCamera = new Renderer::Camera();
auto* window = new Renderer::Window(1200, 1000, "Custom Renderer", mainCamera);
mainShader = new Renderer::Shader("/Users/davidepaollilo/Workspaces/C++/SphereMeshEditor/Shader/GLSL/vertex.vert",
"/Users/davidepaollilo/Workspaces/C++/SphereMeshEditor/Shader/GLSL/fragment.frag");
sphereShader = new Renderer::Shader("/Users/davidepaollilo/Workspaces/C++/SphereMeshEditor/Shader/GLSL/impostor"
".vert", "/Users/davidepaollilo/Workspaces/C++/SphereMeshEditor/Shader/GLSL"
"/impostor"
".frag");
if (!loadCachedResult()) {
// mesh = new Renderer::TriMesh("/Users/davidepaollilo/Workspaces/C++/SphereMeshEditor"
// "/Assets/Models/camel-poses"
// "/camel-reference-4040.obj", mainShader);
mesh = new Renderer::TriMesh("/Users/davidepaollilo/Workspaces/C++/SphereMeshEditor/Assets/Models"
"/smaug"
".obj", mainShader);
// mesh = new Renderer::TriMesh("/Users/davidepaollilo/Workspaces/C++/Thesis/Assets/Models/bunny250NH.obj", mainShader);
sm = new Renderer::SphereMesh(mesh, sphereShader);
}
window->setMeshShader(mainShader);
window->setSphereMeshShader(sphereShader);
window->setTargetMesh(mesh);
window->setSphereMesh(sm);
window->render();
delete window;
return 0;
}