Set matrix when rendering

This commit is contained in:
Linloir 2022-12-13 13:51:03 +08:00
parent b9ce5af24b
commit a49f215928
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
3 changed files with 17 additions and 0 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -6,6 +6,7 @@
#include <vector>
#include "camera.h"
#include "shader.h"
#include "renderable.h"
#include "vao.h"
@ -19,6 +20,7 @@ private:
std::vector<Renderable> _objects;
ShaderProgram _shaderProgram = ShaderProgram::empty();
VertexArrayObject _vao = VertexArrayObject::empty();
Camera _camera;
public:
SceneViewer(QWidget* parent = 0);