From 94311f9c4e82b7475802b1934cc0c5b243e0cd2f Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 3 Mar 2021 00:08:47 +0000 Subject: Replace Transform with Location Simpler, unbinds the transformation matrices for location, now done just in the shader. --- gfx/gl/shader.cpp | 6 +++++- gfx/gl/shader.h | 4 +++- gfx/gl/transform.cpp | 16 ---------------- gfx/gl/transform.h | 53 ---------------------------------------------------- 4 files changed, 8 insertions(+), 71 deletions(-) delete mode 100644 gfx/gl/transform.cpp delete mode 100644 gfx/gl/transform.h (limited to 'gfx/gl') diff --git a/gfx/gl/shader.cpp b/gfx/gl/shader.cpp index f30af5c..04d5ac6 100644 --- a/gfx/gl/shader.cpp +++ b/gfx/gl/shader.cpp @@ -8,6 +8,9 @@ #include #include #include +#include +#include +#include #include #include @@ -67,10 +70,11 @@ Shader::setUniform(const GLchar * uniform, glm::vec3 v) const } void -Shader::setModel(glm::mat4 model, Program pid) const +Shader::setModel(const Location & loc, Program pid) const { auto & prog = programs[(int)pid]; glUseProgram(prog.m_program); + const auto model {glm::translate(loc.pos) * rotate_ypr(loc.rot)}; glUniformMatrix4fv(prog.model_uniform, 1, GL_FALSE, &model[0][0]); } diff --git a/gfx/gl/shader.h b/gfx/gl/shader.h index e4904ed..f1fe705 100644 --- a/gfx/gl/shader.h +++ b/gfx/gl/shader.h @@ -7,6 +7,8 @@ #include #include +class Location; + class Shader { public: enum class Program { Basic = 0, Water = 1, LandMass = 2 }; @@ -14,7 +16,7 @@ public: Shader(); void setView(glm::mat4 view) const; - void setModel(glm::mat4 model, Program = Program::Basic) const; + void setModel(const Location &, Program = Program::Basic) const; void setUniform(const GLchar *, glm::vec3 dir) const; static void CheckShaderError(GLuint shader, GLuint flag, bool isProgram, std::string_view errorMessage); diff --git a/gfx/gl/transform.cpp b/gfx/gl/transform.cpp deleted file mode 100644 index c7004ba..0000000 --- a/gfx/gl/transform.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "transform.h" -#include -#include - -Transform::Transform(glm::vec3 pos, glm::vec3 rot) : pos {pos}, rot {rot} { } - -glm::mat4 -Transform::GetModel() const -{ - const auto posMat = glm::translate(pos); - const auto rotX = glm::rotate(rot.x, west); - const auto rotY = glm::rotate(rot.y, up); - const auto rotZ = glm::rotate(rot.z, north); - - return posMat * rotY * rotX * rotZ; -} diff --git a/gfx/gl/transform.h b/gfx/gl/transform.h deleted file mode 100644 index 61b571d..0000000 --- a/gfx/gl/transform.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef TRANSFORM_INCLUDED_H -#define TRANSFORM_INCLUDED_H - -#include - -class Transform { -public: - explicit Transform(glm::vec3 pos = {}, glm::vec3 rot = {}); - - [[nodiscard]] glm::mat4 GetModel() const; - - [[nodiscard]] inline glm::vec3 & - GetPos() - { - return pos; - } - - [[nodiscard]] inline const glm::vec3 & - GetPos() const - { - return pos; - } - - [[nodiscard]] inline glm::vec3 & - GetRot() - { - return rot; - } - - [[nodiscard]] inline const glm::vec3 & - GetRot() const - { - return rot; - } - - inline void - SetPos(glm::vec3 && pos) - { - this->pos = pos; - } - - inline void - SetRot(glm::vec3 && rot) - { - this->rot = rot; - } - -private: - glm::vec3 pos; - glm::vec3 rot; -}; - -#endif -- cgit v1.2.3