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) {
|
void Renderable::render(ShaderProgram shader) {
|
||||||
|
// Set model matrix
|
||||||
|
shader.setUniform("model", modelMatrix());
|
||||||
|
// Render
|
||||||
_model->render(shader);
|
_model->render(shader);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,8 @@ void SceneViewer::initializeGL() {
|
|||||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
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)));
|
Logger::info("Currently running on OpenGL version: " + std::string((const char*)glGetString(GL_VERSION)));
|
||||||
|
|
||||||
_vao.ensureInitialized();
|
_vao.ensureInitialized();
|
||||||
@ -83,6 +85,10 @@ void SceneViewer::initializeGL() {
|
|||||||
Logger::info("Model loaded");
|
Logger::info("Model loaded");
|
||||||
Renderable renderable(backpackModel);
|
Renderable renderable(backpackModel);
|
||||||
_objects.push_back(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) {
|
void SceneViewer::resizeGL(int w, int h) {
|
||||||
@ -94,6 +100,12 @@ void SceneViewer::paintGL() {
|
|||||||
|
|
||||||
_shaderProgram.bind();
|
_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) {
|
for (auto object : _objects) {
|
||||||
object.render(_shaderProgram);
|
object.render(_shaderProgram);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "camera.h"
|
||||||
#include "shader.h"
|
#include "shader.h"
|
||||||
#include "renderable.h"
|
#include "renderable.h"
|
||||||
#include "vao.h"
|
#include "vao.h"
|
||||||
@ -19,6 +20,7 @@ private:
|
|||||||
std::vector<Renderable> _objects;
|
std::vector<Renderable> _objects;
|
||||||
ShaderProgram _shaderProgram = ShaderProgram::empty();
|
ShaderProgram _shaderProgram = ShaderProgram::empty();
|
||||||
VertexArrayObject _vao = VertexArrayObject::empty();
|
VertexArrayObject _vao = VertexArrayObject::empty();
|
||||||
|
Camera _camera;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SceneViewer(QWidget* parent = 0);
|
SceneViewer(QWidget* parent = 0);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user