// // Created by sebastian on 09.02.26. // #include "GUIRenderer.h" #include #include #include "../core/gui/uiComponent/UiRenderBundle.h" #include "../toolbox/MathUtils.h" #include "loader/Loader.h" GUIRenderer::GUIRenderer(Loader &loader) { std::vector positions = {-1, 1, -1,-1,1,1,1,-1}; auto model = loader.loadToVAO(positions); rawModel = std::make_unique(model); } void GUIRenderer::render(std::vector>& 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(); }