From fd0f9a5a3fa5884b7e0e8afa0e5b895dcfdca74f Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Mon, 2 Oct 2023 01:35:34 -0400 Subject: [PATCH] Shader memory leak fixed and textuer manager RAII --- Nuake/src/Rendering/Shaders/Shader.cpp | 5 +++++ .../Rendering/Textures/MaterialManager.cpp | 4 ---- .../src/Rendering/Textures/TextureManager.cpp | 21 +++++++++---------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Nuake/src/Rendering/Shaders/Shader.cpp b/Nuake/src/Rendering/Shaders/Shader.cpp index 1d3791e8..bc9a249b 100644 --- a/Nuake/src/Rendering/Shaders/Shader.cpp +++ b/Nuake/src/Rendering/Shaders/Shader.cpp @@ -159,6 +159,8 @@ namespace Nuake if (cs != 0) glDeleteShader(cs); + Source = {}; + return program; } @@ -204,6 +206,9 @@ namespace Nuake std::cout << message << std::endl; // Delete invalid shader glDeleteShader(id); + + delete[] message; + return 0; } diff --git a/Nuake/src/Rendering/Textures/MaterialManager.cpp b/Nuake/src/Rendering/Textures/MaterialManager.cpp index e7c4c1cb..0babe031 100644 --- a/Nuake/src/Rendering/Textures/MaterialManager.cpp +++ b/Nuake/src/Rendering/Textures/MaterialManager.cpp @@ -72,10 +72,6 @@ namespace Nuake std::string displacementPath; Ref newMaterial = CreateRef(j["albedo"]); - //if (j.contains("albedo")) - // newMaterial = new Material(albedoPath); - //else - // newMaterial = new Material(glm::vec3(1, 1, 1)); newMaterial->SetName(matName); if (j.contains("normal")) diff --git a/Nuake/src/Rendering/Textures/TextureManager.cpp b/Nuake/src/Rendering/Textures/TextureManager.cpp index 58986188..fded919f 100644 --- a/Nuake/src/Rendering/Textures/TextureManager.cpp +++ b/Nuake/src/Rendering/Textures/TextureManager.cpp @@ -19,24 +19,23 @@ namespace Nuake void TextureManager::LoadStaticTextures() { using namespace StaticResources; - m_Registry.emplace(Resources_Gizmos_bone_png_path, new Texture(Resources_Gizmos_bone_png, Resources_Gizmos_bone_png_len)); - m_Registry.emplace(Resources_Gizmos_camera_png_path, new Texture(Resources_Gizmos_camera_png, Resources_Gizmos_camera_png_len)); - m_Registry.emplace(Resources_Gizmos_light_png_path, new Texture(Resources_Gizmos_light_png, Resources_Gizmos_light_png_len)); - m_Registry.emplace(Resources_Gizmos_player_png_path, new Texture(Resources_Gizmos_player_png, Resources_Gizmos_player_png_len)); + m_Registry.emplace(Resources_Gizmos_bone_png_path, CreateRef(Resources_Gizmos_bone_png, Resources_Gizmos_bone_png_len)); + m_Registry.emplace(Resources_Gizmos_camera_png_path, CreateRef(Resources_Gizmos_camera_png, Resources_Gizmos_camera_png_len)); + m_Registry.emplace(Resources_Gizmos_light_png_path, CreateRef(Resources_Gizmos_light_png, Resources_Gizmos_light_png_len)); + m_Registry.emplace(Resources_Gizmos_player_png_path, CreateRef(Resources_Gizmos_player_png, Resources_Gizmos_player_png_len)); - m_Registry.emplace(Resources_Images_nuake_logo_png_path, new Texture(Resources_Images_nuake_logo_png, Resources_Images_nuake_logo_png_len)); - m_Registry.emplace(Resources_Images_logo_white_png_path, new Texture(Resources_Images_logo_white_png, Resources_Images_logo_white_png_len)); - m_Registry.emplace(Resources_Images_logo_png_path, new Texture(Resources_Images_logo_png, Resources_Images_logo_png_len)); + m_Registry.emplace(Resources_Images_nuake_logo_png_path, CreateRef(Resources_Images_nuake_logo_png, Resources_Images_nuake_logo_png_len)); + m_Registry.emplace(Resources_Images_logo_white_png_path, CreateRef(Resources_Images_logo_white_png, Resources_Images_logo_white_png_len)); + m_Registry.emplace(Resources_Images_logo_png_path, CreateRef(Resources_Images_logo_png, Resources_Images_logo_png_len)); unsigned char whitePixel[] = { 255, 255, 255, 255 }; - m_Registry.emplace("Resources/Textures/Default.png", new Texture({1, 1}, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, &whitePixel)); + m_Registry.emplace("Resources/Textures/Default.png", CreateRef(Vector2( 1, 1 ), GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, &whitePixel)); m_Registry.emplace("default", new Texture({ 1, 1 }, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, &whitePixel)); unsigned char normalPixel[] = { 128, 128, 255, 255 }; - m_Registry.emplace("Resources/Textures/DefaultNormal.png", new Texture({ 1, 1 }, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, &whitePixel)); + m_Registry.emplace("Resources/Textures/DefaultNormal.png", CreateRef(Vector2(1, 1), GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, &whitePixel)); - // Icons - m_Registry.emplace(Resources_Images_folder_icon_png_path, new Texture(Resources_Images_folder_icon_png, Resources_Images_folder_icon_png_len)); + m_Registry.emplace(Resources_Images_folder_icon_png_path, CreateRef(Resources_Images_folder_icon_png, Resources_Images_folder_icon_png_len)); } Ref TextureManager::GetTexture(const std::string path)