Skip to content

Commit 951d70b

Browse files
committed
Use mvp matrix for render scene
1 parent d6db67c commit 951d70b

File tree

7 files changed

+47
-29
lines changed

7 files changed

+47
-29
lines changed

include/core/ecs/component.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ namespace Engine {
3131
public:
3232
Type type = Type::TRANSFORM;
3333

34-
glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);
35-
glm::vec3 rotation = glm::vec3(0.0f, 0.0f, 0.0f);
36-
glm::vec3 scale = glm::vec3(0.0f, 0.0f, 0.0f);
34+
glm::vec3 position = glm::vec3(1.0f, 1.0f, 1.0f);
35+
glm::vec3 rotation = glm::vec3(1.0f, 1.0f, 1.0f);
36+
glm::vec3 scale = glm::vec3(1.0f, 1.0f, 1.0f);
3737
};
3838

3939

include/core/geometry/primitives.hpp

+26-20
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,34 @@ namespace Engine {
4343
name = std::string("Cube");
4444

4545
mesh->vertices = {
46-
-0.5f, -0.5f, 0.0f,
47-
0.5f, -0.5f, 0.0f,
48-
-0.5f, 0.5f, 0.0f,
49-
0.5f, 0.5f, 0.0f,
50-
-0.5f, -0.5f, -0.0f,
51-
0.5f, -0.5f, -0.0f,
52-
-0.5f, 0.5f, -0.0f,
53-
0.5f, 0.5f, -0.0f
46+
-1.0, -1.0, 1.0,
47+
1.0, -1.0, 1.0,
48+
1.0, 1.0, 1.0,
49+
-1.0, 1.0, 1.0,
50+
// back
51+
-1.0, -1.0, -1.0,
52+
1.0, -1.0, -1.0,
53+
1.0, 1.0, -1.0,
54+
-1.0, 1.0, -1.0
5455
};
5556
mesh->indices = {
56-
2, 6, 7,
57-
2, 3, 7,
58-
0, 4, 5,
59-
0, 1, 5,
60-
0, 2, 6,
61-
0, 4, 6,
62-
1, 3, 7,
63-
1, 5, 7,
64-
0, 2, 3,
65-
0, 1, 3,
66-
4, 6, 7,
67-
4, 5, 7
57+
0, 1, 2,
58+
2, 3, 0,
59+
// right
60+
1, 5, 6,
61+
6, 2, 1,
62+
// back
63+
7, 6, 5,
64+
5, 4, 7,
65+
// left
66+
4, 0, 3,
67+
3, 7, 4,
68+
// bottom
69+
4, 5, 1,
70+
1, 0, 4,
71+
// top
72+
3, 2, 6,
73+
6, 7, 3
6874
};
6975
mesh->Initialize();
7076
}

include/core/render/api.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace Engine {
3434
void SetBackendAPI(Backend);
3535
void Startup();
3636
void Shutdown();
37-
void RenderScene(Engine::Scene::Scene *);
37+
void RenderScene(Engine::Scene::Scene *, glm::mat4);
3838
};
3939
}
4040
}

include/engine.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ namespace Engine {
9797

9898
app->Update();
9999
app->editor->Update();
100-
app->render->RenderScene(app->scene);
100+
// TODO: Uncomment after move camera as part of scene
101+
// app->render->RenderScene(app->scene);
101102
app->window->Update();
102103
}
103104

include/meta.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef __META_HPP__
22
#define __META_HPP__
33

4-
#define ENGINE_VERSION "0.0.9"
4+
#define ENGINE_VERSION "0.1.0"
55
#define GLSL_VERSION "#version 330"
66

77
#endif

src/core/render/api.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,20 @@ void Render::Shutdown() {
4343
}
4444

4545

46-
void Render::RenderScene(Engine::Scene::Scene *scene) {
46+
void Render::RenderScene(Engine::Scene::Scene *scene, glm::mat4 MVP) {
4747
// TODO: Only for opengl backend
4848

4949
for (std::shared_ptr<Object> object : scene->root->entities) {
5050
if (object->HasComponent(Ecs::Component::Type::MESH)) {
5151
// TODO: If object hasn't own shader component
5252
shader->Use();
53+
shader->UniformPosition(
54+
"transform_position",
55+
object->transform->position[0],
56+
object->transform->position[1],
57+
object->transform->position[2]
58+
);
59+
shader->UniformMatrix("MVP", MVP);
5360

5461
object->mesh->VAO->bind();
5562
glDrawElements(GL_TRIANGLES, object->mesh->indices.size(), GL_UNSIGNED_INT, 0);

src/main.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -614,8 +614,12 @@ class UserApplication : public Engine::EngineApplication {
614614
// this->scene->root->children.push_back(mp5);
615615
// this->scene->root->children.push_back(tank);
616616

617+
std::shared_ptr<Engine::Geometry::Plane> plane = std::make_shared<Engine::Geometry::Plane>();
618+
scene->root->entities.push_back(plane);
617619
std::shared_ptr<Engine::Geometry::Cube> cube = std::make_shared<Engine::Geometry::Cube>();
618620
scene->root->entities.push_back(cube);
621+
std::shared_ptr<Engine::Geometry::Cube> cube2 = std::make_shared<Engine::Geometry::Cube>();
622+
scene->root->entities.push_back(cube2);
619623

620624
GLFWwindow *window = static_cast<Engine::Window::GLFWWindowProvider*>(this->window)->object;
621625
glfwSetMouseButtonCallback(window, mouse_button_callback);
@@ -642,6 +646,8 @@ class UserApplication : public Engine::EngineApplication {
642646
view = camera.GetViewMatrix();
643647
projection = glm::perspective(glm::radians(camera.Zoom), (float)screenWidth/(float)screenHeight, 0.1f, 1000.0f);
644648

649+
render->RenderScene(scene, projection * view);
650+
645651
// Draw skybox
646652
glDepthFunc(GL_LEQUAL);
647653
skyboxShader->Use();
@@ -668,8 +674,6 @@ class UserApplication : public Engine::EngineApplication {
668674

669675
void Shutdown() {
670676
logger->trace(std::string("Shutdown"));
671-
672-
delete this->debugAxes;
673677
}
674678
};
675679

0 commit comments

Comments
 (0)