diff options
Diffstat (limited to 'xbmc/rendering/gl/RenderSystemGL.cpp')
-rw-r--r-- | xbmc/rendering/gl/RenderSystemGL.cpp | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/xbmc/rendering/gl/RenderSystemGL.cpp b/xbmc/rendering/gl/RenderSystemGL.cpp index 4b80014d41..516027ef49 100644 --- a/xbmc/rendering/gl/RenderSystemGL.cpp +++ b/xbmc/rendering/gl/RenderSystemGL.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2018 Team Kodi + * Copyright (C) 2005-2024 Team Kodi * This file is part of Kodi - https://kodi.tv * * SPDX-License-Identifier: GPL-2.0-or-later @@ -682,13 +682,24 @@ void CRenderSystemGL::InitialiseShaders() CLog::Log(LOGERROR, "GUI Shader gl_shader_frag_multi.glsl - compile and link failed"); } - m_pShader[ShaderMethodGL::SM_FONTS] = - std::make_unique<CGLShader>("gl_shader_frag_fonts.glsl", defines); + m_pShader[ShaderMethodGL::SM_FONTS] = std::make_unique<CGLShader>( + "gl_shader_vert_simple.glsl", "gl_shader_frag_fonts.glsl", defines); if (!m_pShader[ShaderMethodGL::SM_FONTS]->CompileAndLink()) { m_pShader[ShaderMethodGL::SM_FONTS]->Free(); m_pShader[ShaderMethodGL::SM_FONTS].reset(); - CLog::Log(LOGERROR, "GUI Shader gl_shader_frag_fonts.glsl - compile and link failed"); + CLog::Log(LOGERROR, "GUI Shader gl_shader_vert_simple.glsl + gl_shader_frag_fonts.glsl - " + "compile and link failed"); + } + + m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP] = + std::make_unique<CGLShader>("gl_shader_vert_clip.glsl", "gl_shader_frag_fonts.glsl", defines); + if (!m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP]->CompileAndLink()) + { + m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP]->Free(); + m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP].reset(); + CLog::Log(LOGERROR, "GUI Shader gl_shader_vert_clip.glsl + gl_shader_frag_fonts.glsl - compile " + "and link failed"); } m_pShader[ShaderMethodGL::SM_TEXTURE_NOBLEND] = @@ -732,6 +743,10 @@ void CRenderSystemGL::ReleaseShaders() m_pShader[ShaderMethodGL::SM_FONTS]->Free(); m_pShader[ShaderMethodGL::SM_FONTS].reset(); + if (m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP]) + m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP]->Free(); + m_pShader[ShaderMethodGL::SM_FONTS_SHADER_CLIP].reset(); + if (m_pShader[ShaderMethodGL::SM_TEXTURE_NOBLEND]) m_pShader[ShaderMethodGL::SM_TEXTURE_NOBLEND]->Free(); m_pShader[ShaderMethodGL::SM_TEXTURE_NOBLEND].reset(); @@ -811,6 +826,30 @@ GLint CRenderSystemGL::ShaderGetModel() return -1; } +GLint CRenderSystemGL::ShaderGetMatrix() +{ + if (m_pShader[m_method]) + return m_pShader[m_method]->GetMatrixLoc(); + + return -1; +} + +GLint CRenderSystemGL::ShaderGetClip() +{ + if (m_pShader[m_method]) + return m_pShader[m_method]->GetShaderClipLoc(); + + return -1; +} + +GLint CRenderSystemGL::ShaderGetCoordStep() +{ + if (m_pShader[m_method]) + return m_pShader[m_method]->GetShaderCoordStepLoc(); + + return -1; +} + std::string CRenderSystemGL::GetShaderPath(const std::string &filename) { std::string path = "GL/1.2/"; |