Skip to content
Snippets Groups Projects
Commit 3c8c1d7e authored by Woohyung Choi's avatar Woohyung Choi
Browse files

add front, right. up vector in RenderObject.

parent 5839ec6d
Branches
No related tags found
No related merge requests found
...@@ -68,6 +68,7 @@ RenderObject::RenderObject(Mesh * _mesh) ...@@ -68,6 +68,7 @@ RenderObject::RenderObject(Mesh * _mesh)
mesh = _mesh; mesh = _mesh;
update_model_matrix(); update_model_matrix();
update_directional_vector();
} }
Material *RenderObject::get_material() Material *RenderObject::get_material()
...@@ -97,11 +98,29 @@ void RenderObject::update_model_matrix() ...@@ -97,11 +98,29 @@ void RenderObject::update_model_matrix()
model = glm::scale(model, scale); model = glm::scale(model, scale);
} }
void RenderObject::update_directional_vector()
{
glm::vec3 front;
glm::vec3 up;
glm::vec3 right;
glm::vec3 _front;
front.x = cos(glm::radians(rotate.y)) * cos(glm::radians(rotate.x));
front.y = sin(glm::radians(rotate.x));
front.z = sin(glm::radians(rotate.y)) * cos(glm::radians(rotate.x));
front = glm::normalize(_front);
right = glm::normalize(glm::cross(front, glm::vec3(0, 1, 0)));
up = glm::normalize(glm::cross(right, front));
}
void RenderObject::set_translate(glm::vec3 _translate) void RenderObject::set_translate(glm::vec3 _translate)
{ {
translate = _translate; translate = _translate;
update_model_matrix(); update_model_matrix();
update_directional_vector();
} }
void RenderObject::set_rotate(glm::vec3 _rotate) void RenderObject::set_rotate(glm::vec3 _rotate)
...@@ -109,6 +128,7 @@ void RenderObject::set_rotate(glm::vec3 _rotate) ...@@ -109,6 +128,7 @@ void RenderObject::set_rotate(glm::vec3 _rotate)
rotate = _rotate; rotate = _rotate;
update_model_matrix(); update_model_matrix();
update_directional_vector();
} }
void RenderObject::set_scale(glm::vec3 _scale) void RenderObject::set_scale(glm::vec3 _scale)
...@@ -123,6 +143,7 @@ void RenderObject::move(glm::vec3 _delta) ...@@ -123,6 +143,7 @@ void RenderObject::move(glm::vec3 _delta)
translate += _delta; translate += _delta;
update_model_matrix(); update_model_matrix();
update_directional_vector();
} }
void RenderObject::move(glm::vec3 _direction, glm::vec1 _velocity) void RenderObject::move(glm::vec3 _direction, glm::vec1 _velocity)
...@@ -177,23 +198,13 @@ void RenderObject::render(Camera &camera) ...@@ -177,23 +198,13 @@ void RenderObject::render(Camera &camera)
void RenderObject::projective_render(Camera &camera) void RenderObject::projective_render(Camera &camera)
{ {
glm::vec3 projrotate = glm::vec3(60.0f, 0.0f, 0.0f);
glm::vec3 front;
front.x = cos(glm::radians(projrotate.y)) * cos(glm::radians(projrotate.x));
front.y = sin(glm::radians(projrotate.x));
front.z = sin(glm::radians(projrotate.y)) * cos(glm::radians(projrotate.x));
front = glm::normalize(front);
auto Right = glm::normalize(glm::cross(front, glm::vec3(0.0f, 1.0f, 0.0f)));
auto Up = glm::normalize(glm::cross(Right, front));
glm::mat4 bias = { 0.5f, 0.0f, 0.0f, 0.5f, glm::mat4 bias = { 0.5f, 0.0f, 0.0f, 0.5f,
0.0f, 0.5f, 0.0f, 0.5f, 0.0f, 0.5f, 0.0f, 0.5f,
0.0f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.5f, 0.5f,
0.0f, 0.0f, 0.0f, 1.0f }; 0.0f, 0.0f, 0.0f, 1.0f };
glm::mat4 projector_view = glm::lookAt(camera.Position, camera.Position + camera.Front, camera.Up); glm::mat4 projector_view = glm::lookAt(camera.Position, camera.Position + camera.Front, camera.Up);
glm::mat4 projector_projection = glm::perspective(glm::radians(camera.Zoom), (float)_SCR_WIDTH / (float)_SCR_HEIGHT, 0.1f, 100.0f); glm::mat4 projector_projection = glm::perspective(glm::radians(camera.Zoom), 1.0f, 0.1f, 100.0f);
auto prog = material->get_program(); auto prog = material->get_program();
glUseProgram(prog); glUseProgram(prog);
...@@ -362,12 +373,12 @@ void set_uniform_value(GLuint &prog, const char *name, glm::ivec3 &value) ...@@ -362,12 +373,12 @@ void set_uniform_value(GLuint &prog, const char *name, glm::ivec3 &value)
auto uniform = glGetUniformLocation(prog, name); auto uniform = glGetUniformLocation(prog, name);
glUniform3iv(uniform, 1, &value.x); glUniform3iv(uniform, 1, &value.x);
} }
void set_uniform_value(GLuint &prog, const char *name, glm::vec4 &value) void set_uniform_value(GLuint &prog, const char *name, glm::vec4 value)
{ {
auto uniform = glGetUniformLocation(prog, name); auto uniform = glGetUniformLocation(prog, name);
glUniform4fv(uniform, 1, &value.x); glUniform4fv(uniform, 1, &value.x);
} }
void set_uniform_value(GLuint &prog, const char *name, glm::ivec4 &value) void set_uniform_value(GLuint &prog, const char *name, glm::ivec4 value)
{ {
auto uniform = glGetUniformLocation(prog, name); auto uniform = glGetUniformLocation(prog, name);
glUniform4iv(uniform, 1, &value.x); glUniform4iv(uniform, 1, &value.x);
......
...@@ -64,7 +64,12 @@ private: ...@@ -64,7 +64,12 @@ private:
glm::vec3 rotate; glm::vec3 rotate;
glm::vec3 scale; glm::vec3 scale;
glm::vec3 front;
glm::vec3 up;
glm::vec3 right;
void update_model_matrix(); void update_model_matrix();
void update_directional_vector();
public: public:
RenderObject(Mesh * _mesh); RenderObject(Mesh * _mesh);
...@@ -72,6 +77,7 @@ public: ...@@ -72,6 +77,7 @@ public:
Material *get_material(); Material *get_material();
GLuint get_vertex_count(); GLuint get_vertex_count();
glm::mat4 get_model_matrix(); glm::mat4 get_model_matrix();
glm::vec3 get_front();
void set_translate(glm::vec3 _translate); void set_translate(glm::vec3 _translate);
void set_rotate(glm::vec3 _rotate); void set_rotate(glm::vec3 _rotate);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment