From 2fd1d6db24ba943d643bde02c65aa2b53229879b Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Sat, 17 Dec 2022 11:41:13 +0800 Subject: [PATCH] [CORE][ADD] Enable cross context model transferring - Reload texture on another context - Copy meshes - [BUG] memory leak (not fixed yet) --- FinalProject/renderable.cpp | 9 +++++++++ FinalProject/renderable.h | 11 ++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/FinalProject/renderable.cpp b/FinalProject/renderable.cpp index 86463a1..27e4eef 100644 --- a/FinalProject/renderable.cpp +++ b/FinalProject/renderable.cpp @@ -6,6 +6,10 @@ Renderable::Renderable(Model* model) : _model(model) {} Renderable::Renderable(Model* model, glm::vec3 position) : _model(model), _position(position) {} +void Renderable::setModel(Model* model) { + _model = model; +} + void Renderable::move(glm::vec3 deltaVec) { _position += deltaVec; } @@ -31,6 +35,11 @@ void Renderable::setScale(float scale) { } void Renderable::render(ShaderProgram shader) { + // Check if initialized + if (_model == nullptr) { + Logger::error("Tries to render an uninitialized renderable object"); + return; + } // Set model matrix shader.setUniform("model", modelMatrix()); // Render diff --git a/FinalProject/renderable.h b/FinalProject/renderable.h index 7e5912a..6382901 100644 --- a/FinalProject/renderable.h +++ b/FinalProject/renderable.h @@ -7,8 +7,16 @@ #include "shader.h" class Renderable { +public: + static Renderable empty() { + return Renderable(); + } + private: - Model* _model; + Renderable() {} + +private: + Model* _model = nullptr; glm::vec3 _position = glm::vec3(0.0f); glm::mat4 _rotation = glm::mat4(1.0f); glm::vec3 _scale = glm::vec3(1.0f); @@ -18,6 +26,7 @@ public: Renderable(Model* model, glm::vec3 position); public: + void setModel(Model* model); void move(glm::vec3 deltaVec); void setPosition(glm::vec3 position); void rotate(glm::vec3 axis, float deltaAngle);