Dicewars-Siedler/src/engine/renderer/GUIRenderer.cpp
2026-02-12 18:44:55 +01:00

47 lines
1.4 KiB
C++

//
// Created by sebastian on 09.02.26.
//
#include "GUIRenderer.h"
#include <iostream>
#include <vector>
#include "../core/gui/uiComponent/UiRenderBundle.h"
#include "../toolbox/MathUtils.h"
#include "loader/Loader.h"
GUIRenderer::GUIRenderer(Loader &loader) {
std::vector<float> positions = {-1, 1, -1,-1,1,1,1,-1};
auto model = loader.loadToVAO(positions);
rawModel = std::make_unique<RawModel>(model);
}
void GUIRenderer::render(std::vector<std::shared_ptr<GUITexture>>& gui_textures) {
guiShader.start();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_DEPTH_TEST);
glBindVertexArray(rawModel->vaoID);
glEnableVertexAttribArray(0);
for (auto texture : gui_textures) {
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture->getTextureID());
glm::mat4 transformationMatrix = MathUtils::createTransformationMatrix(texture->getPosition(), texture->getScale());
guiShader.loadTransformationMatrix(transformationMatrix);
guiShader.loadShaderEffect(texture->getBrightness(), texture->getTintColor(), texture->getTintStrength());
glDrawArrays(GL_TRIANGLE_STRIP, 0, rawModel->vertexCount);
}
//render
glDisableVertexAttribArray(0);
glBindVertexArray(0);
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
guiShader.stop();
}
void GUIRenderer::cleanUp() {
guiShader.cleanUp();
}