From 7129d65df7b02d7412ee5d56debd5a9c094db5ad Mon Sep 17 00:00:00 2001 From: rtk0c Date: Sat, 7 May 2022 15:36:35 -0700 Subject: Changeset: 23 Fix camera view matrix, [WIP] guizmo --- source/Renderer.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'source/Renderer.cpp') diff --git a/source/Renderer.cpp b/source/Renderer.cpp index 99fc84d..3497449 100644 --- a/source/Renderer.cpp +++ b/source/Renderer.cpp @@ -1,6 +1,11 @@ #include "Renderer.hpp" +#include "GameObject.hpp" + #include +#include +#include +#include RenderObject::RenderObject() : mVao{ GL_NONE } { @@ -102,7 +107,6 @@ void Renderer::BeginFrame(Camera& camera, float currentTime, float deltaTime) { mFrame.camera = &camera; mFrame.matrixView = camera.CalcViewMatrix(); mFrame.matrixProj = camera.CalcProjectionMatrix(); - mFrame.matrixCombined = mFrame.matrixProj * mFrame.matrixView; mFrame.time = currentTime; mFrame.deltaTime = deltaTime; } @@ -112,11 +116,13 @@ void Renderer::EndFrame() { mInsideFrame = false; } -void Renderer::Draw(const RenderObject* objects, size_t count) { +void Renderer::Draw(const RenderObject* objects, const GameObject* gameObject, size_t count) { using namespace Tags; assert(mInsideFrame); + auto vpMatrix = mFrame.matrixProj * mFrame.matrixView; + // TODO shader grouping // TODO material grouping for (size_t i = 0; i < count; ++i) { @@ -135,7 +141,13 @@ void Renderer::Draw(const RenderObject* objects, size_t count) { // Autofill uniforms if (shader->autofill_Transform != kInvalidLocation) { - glUniformMatrix4fv(shader->autofill_Transform, 1, GL_FALSE, &mFrame.matrixCombined[0][0]); + glm::mat4 objectMatrix(1.0f); + objectMatrix = glm::translate(objectMatrix, gameObject->GetPos()); + objectMatrix *= glm::toMat4(gameObject->GetRotation()); + objectMatrix = glm::scale(objectMatrix, gameObject->GetScale()); + glm::mat4 transform = vpMatrix * objectMatrix; + + glUniformMatrix4fv(shader->autofill_Transform, 1, GL_FALSE, &transform[0][0]); } if (shader->autofill_Time != kInvalidLocation) { glUniform1f(shader->autofill_Time, mFrame.time); -- cgit v1.2.3-70-g09d2