diff --git a/FinalProject/renderable.cpp b/FinalProject/renderable.cpp index 40b735b..86463a1 100644 --- a/FinalProject/renderable.cpp +++ b/FinalProject/renderable.cpp @@ -31,5 +31,8 @@ void Renderable::setScale(float scale) { } void Renderable::render(ShaderProgram shader) { + // Set model matrix + shader.setUniform("model", modelMatrix()); + // Render _model->render(shader); } diff --git a/FinalProject/sceneviewer.cpp b/FinalProject/sceneviewer.cpp index dd77e69..37851c0 100644 --- a/FinalProject/sceneviewer.cpp +++ b/FinalProject/sceneviewer.cpp @@ -51,6 +51,8 @@ void SceneViewer::initializeGL() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glEnable(GL_DEPTH_TEST); + Logger::info("Currently running on OpenGL version: " + std::string((const char*)glGetString(GL_VERSION))); _vao.ensureInitialized(); @@ -83,6 +85,10 @@ void SceneViewer::initializeGL() { Logger::info("Model loaded"); Renderable renderable(backpackModel); _objects.push_back(backpackModel); + + _camera.setPosition(glm::vec3(0.0f, 0.0f, 3.0f)); + _camera.setYaw(-90.0f); + _camera.setPitch(0.0f); } void SceneViewer::resizeGL(int w, int h) { @@ -94,6 +100,12 @@ void SceneViewer::paintGL() { _shaderProgram.bind(); + // Set view and projection matrices + glm::mat4 view = _camera.viewMatrix(); + glm::mat4 projection = glm::perspective(glm::radians(_camera.zoom()), (float)width() / (float)height(), 0.1f, 100.0f); + _shaderProgram.setUniform("view", view); + _shaderProgram.setUniform("projection", projection); + for (auto object : _objects) { object.render(_shaderProgram); } diff --git a/FinalProject/sceneviewer.h b/FinalProject/sceneviewer.h index 223fb9c..62b50bc 100644 --- a/FinalProject/sceneviewer.h +++ b/FinalProject/sceneviewer.h @@ -6,6 +6,7 @@ #include +#include "camera.h" #include "shader.h" #include "renderable.h" #include "vao.h" @@ -19,6 +20,7 @@ private: std::vector _objects; ShaderProgram _shaderProgram = ShaderProgram::empty(); VertexArrayObject _vao = VertexArrayObject::empty(); + Camera _camera; public: SceneViewer(QWidget* parent = 0);