Renderers: Cleanup RendererOutputShaders

This commit is contained in:
goeiecool9999 2024-11-04 19:46:39 +01:00
parent b41d600276
commit af5114d031
3 changed files with 20 additions and 6 deletions

View file

@ -257,6 +257,7 @@ void LatteThread_Exit()
LatteSHRC_UnloadAll();
// close disk cache
LatteShaderCache_Close();
RendererOutputShader::ShutdownStatic();
// destroy renderer but make sure that g_renderer remains valid until the destructor has finished
if (g_renderer)
{

View file

@ -149,8 +149,8 @@ void main(){
RendererOutputShader::RendererOutputShader(const std::string& vertex_source, const std::string& fragment_source)
{
m_vertex_shader = g_renderer->shader_create(RendererShader::ShaderType::kVertex, 0, 0, vertex_source, false, false);
m_fragment_shader = g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, fragment_source, false, false);
m_vertex_shader.reset(g_renderer->shader_create(RendererShader::ShaderType::kVertex, 0, 0, vertex_source, false, false));
m_fragment_shader.reset(g_renderer->shader_create(RendererShader::ShaderType::kFragment, 0, 0, fragment_source, false, false));
m_vertex_shader->PreponeCompilation(true);
m_fragment_shader->PreponeCompilation(true);
@ -374,3 +374,15 @@ void RendererOutputShader::InitializeStatic()
s_hermit_shader_ud = new RendererOutputShader(vertex_source_ud, s_hermite_shader_source);*/
}
}
void RendererOutputShader::ShutdownStatic()
{
delete s_copy_shader;
delete s_copy_shader_ud;
delete s_bicubic_shader;
delete s_bicubic_shader_ud;
delete s_hermit_shader;
delete s_hermit_shader_ud;
}

View file

@ -21,15 +21,16 @@ public:
RendererShader* GetVertexShader() const
{
return m_vertex_shader;
return m_vertex_shader.get();
}
RendererShader* GetFragmentShader() const
{
return m_fragment_shader;
return m_fragment_shader.get();
}
static void InitializeStatic();
static void ShutdownStatic();
static RendererOutputShader* s_copy_shader;
static RendererOutputShader* s_copy_shader_ud;
@ -44,8 +45,8 @@ public:
static std::string GetOpenGlVertexSource(bool render_upside_down);
protected:
RendererShader* m_vertex_shader;
RendererShader* m_fragment_shader;
std::unique_ptr<RendererShader> m_vertex_shader;
std::unique_ptr<RendererShader> m_fragment_shader;
struct
{