From afebb33a6fe13934869ba5e46b2ee5e1caf5d0fa Mon Sep 17 00:00:00 2001 From: parker Date: Thu, 26 Jun 2025 16:18:58 +0100 Subject: [PATCH] feat(viewport): add setUniform camera method --- src/gui/viewport/GLCamera.cpp | 7 +++++++ src/gui/viewport/GLCamera.h | 1 + src/gui/viewport/ViewportGLWidget.cpp | 5 +---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/gui/viewport/GLCamera.cpp b/src/gui/viewport/GLCamera.cpp index 0ec5818..23f761c 100644 --- a/src/gui/viewport/GLCamera.cpp +++ b/src/gui/viewport/GLCamera.cpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include void printMatrix(const glm::mat4& matrix) { for (int i = 0; i < 4; ++i) { @@ -132,3 +134,8 @@ glm::vec3 GLCamera::getForward() return glm::normalize(camCenter_-camPos_); }; +void GLCamera::setUniform(uint uniformLocation) +{ + QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions(); + f->glUniformMatrix4fv(uniformLocation, 1, GL_FALSE, glm::value_ptr(getViewMatrix())); +} diff --git a/src/gui/viewport/GLCamera.h b/src/gui/viewport/GLCamera.h index 2e65732..f353e9a 100644 --- a/src/gui/viewport/GLCamera.h +++ b/src/gui/viewport/GLCamera.h @@ -14,6 +14,7 @@ public: void changeRadius(float delta); void changeCenter(float x, float y, float z); void setCenter(float x, float y, float z); + void setUniform(uint uniformLocation); glm::vec3 getForward(); glm::vec3 getRight(); diff --git a/src/gui/viewport/ViewportGLWidget.cpp b/src/gui/viewport/ViewportGLWidget.cpp index 9880200..0b7cca6 100644 --- a/src/gui/viewport/ViewportGLWidget.cpp +++ b/src/gui/viewport/ViewportGLWidget.cpp @@ -133,14 +133,11 @@ void ViewportGLWidget::paintGL() ); - glm::mat4 viewMatrix = curCamera.getViewMatrix(); - - GLint projMLoc = glGetUniformLocation(shaderProgram, "uProj"); glUniformMatrix4fv(projMLoc, 1, GL_FALSE, glm::value_ptr(projMatrix)); GLint viewMLoc = glGetUniformLocation(shaderProgram, "uView"); - glUniformMatrix4fv(viewMLoc, 1, GL_FALSE, glm::value_ptr(viewMatrix)); + curCamera.setUniform(viewMLoc);