Added Camera.

This commit is contained in:
2014-03-09 20:32:57 +01:00
parent b5349ba93c
commit fcbf802cc2
6 changed files with 140 additions and 47 deletions
+5 -46
View File
@@ -4,47 +4,6 @@ Renderer::Renderer()
{
}
// ------------ TEMPCAMERA --------------------
struct Camera
{
glm::vec3 Position;
float Pitch;
float Yaw;
float Roll;
glm::mat4 getViewMatrix()
{
glm::mat4 view;
view = glm::rotate(view, Pitch, glm::vec3(1,0,0));
view = glm::rotate(view, Yaw, glm::vec3(0,1,0));
view = glm::rotate(view, Roll, glm::vec3(0,0,1));
view = glm::translate(view, -Position);
return view;
}
glm::vec3 Forward()
{
glm::mat4 Orientation;
Orientation = glm::rotate(Orientation, Pitch, glm::vec3(1,0,0));
Orientation = glm::rotate(Orientation, Yaw, glm::vec3(0,1,0));
return glm::vec3(glm::vec4(0,0,-1,0) * Orientation);
}
glm::vec3 Right()
{
glm::mat4 Orientation;
Orientation = glm::rotate(Orientation, Pitch, glm::vec3(1,0,0));
Orientation = glm::rotate(Orientation, Yaw, glm::vec3(0,1,0));
return glm::vec3(glm::vec4(1,0,0,0) * Orientation);
}
Camera() : Position(0.0f, 2.0f, 0.0f), Pitch(1.0f), Yaw(4.5f), Roll(0.f) { }
} MyCamera;
//-----------------TempCamera-.---------------------
void Renderer::Initialize()
{
// Initialize GLFW
@@ -82,6 +41,9 @@ void Renderer::Initialize()
}
glEnable(GL_DEPTH_TEST);
// Create Camera
m_Camera = std::make_shared<Camera>(90.f, WIDTH / HEIGHT, 0.01f, 1000.f);
LoadContent();
}
@@ -92,18 +54,15 @@ void Renderer::Draw(double _dt)
m_ShaderProgram.Bind();
viewMatrix = glm::mat4();
viewMatrix = MyCamera.getViewMatrix(); //TEMP
glm::mat4 cameraMatrix = m_Camera->ProjectionMatrix() * m_Camera->ViewMatrix();
glm::mat4 MVP;
for(int i = 0; i < ModelsToRender.size(); i++)
{
glActiveTexture(GL_TEXTURE0);
//FIXA MED FLERA TEXTURER
glBindTexture(GL_TEXTURE_2D, ModelsToRender[i]->texture[0]->texture);
//MVP = projectionMatrix * viewMatrix * /* ModelMatrix */;
MVP = cameraMatrix; // * ModelMatrix;
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "MVP"), 1, GL_FALSE, glm::value_ptr(MVP));
glBindVertexArray(ModelsToRender[i]->VAO);
glDrawArrays(GL_TRIANGLES, 0, ModelsToRender[i]->Vertices.size());