mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-17 15:38:11 +08:00
Set matrix when rendering
This commit is contained in:
parent
b9ce5af24b
commit
a49f215928
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user