From e050dce79b67ae6386240567a994454711ab998d Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 14 Aug 2025 00:42:05 +0200 Subject: [add]: Custom memory managers and fix includes --- src/Rendering/Renderer.cpp | 13 ++++++------- src/Rendering/Renderer.h | 14 +++++++------- src/Rendering/Shader.cpp | 16 ++++++++-------- src/Rendering/Shader.h | 15 ++++++++------- src/Rendering/Texture.cpp | 17 +++++++++-------- src/Rendering/Texture.h | 7 ++++--- src/Rendering/VertexArray.cpp | 1 + src/Rendering/VertexArray.h | 12 +++++++----- src/Rendering/VertexBuffer.cpp | 1 + 9 files changed, 51 insertions(+), 45 deletions(-) (limited to 'src/Rendering') diff --git a/src/Rendering/Renderer.cpp b/src/Rendering/Renderer.cpp index 577dcf4..c0684cb 100644 --- a/src/Rendering/Renderer.cpp +++ b/src/Rendering/Renderer.cpp @@ -3,19 +3,18 @@ #include "Platform/OpenGL/OpenGLRendererAPI.h" #include "Platform/Vulkan/VulkanRendererAPI.h" -#include #include namespace Donut { - std::unique_ptr RendererAPI::Create() + Scope RendererAPI::Create() { switch (s_API) { case API::OpenGL: - return std::make_unique(); + return CreateScope(); case API::Vulkan: - return std::make_unique(); + return CreateScope(); default: return nullptr; } @@ -38,8 +37,8 @@ namespace Donut RenderCommand::SetViewport(0, 0, width, height); } - void Renderer::Submit(const std::shared_ptr& shader, - const std::shared_ptr& vertexArray, + void Renderer::Submit(const Ref& shader, + const Ref& vertexArray, const glm::mat4& transform, const glm::mat4& viewProjection) { @@ -51,7 +50,7 @@ namespace Donut RenderCommand::DrawIndexed(vertexArray); } - std::unique_ptr RenderCommand::s_RendererAPI = RendererAPI::Create(); + Scope RenderCommand::s_RendererAPI = RendererAPI::Create(); void Renderer::SetClearColor(const glm::vec4& color) { diff --git a/src/Rendering/Renderer.h b/src/Rendering/Renderer.h index 61dae82..fa37fc8 100644 --- a/src/Rendering/Renderer.h +++ b/src/Rendering/Renderer.h @@ -1,10 +1,10 @@ #pragma once +#include "Core/Memory.h" #include "VertexArray.h" #include "Shader.h" #include -#include namespace Donut { @@ -28,12 +28,12 @@ namespace Donut virtual void EnableDepthTest() = 0; virtual void SetFaceCulling(bool enabled) = 0; - virtual void DrawIndexed(const std::shared_ptr& vertexArray, + virtual void DrawIndexed(const Ref& vertexArray, uint32_t indexCount = 0) = 0; inline static API GetAPI() { return s_API; } inline static void SetAPI(API api) { s_API = api; } - static std::unique_ptr Create(); + static Scope Create(); private: static API s_API; }; @@ -71,13 +71,13 @@ namespace Donut s_RendererAPI->SetFaceCulling(enabled); } - inline static void DrawIndexed(const std::shared_ptr& vertexArray, uint32_t indexCount = 0) + inline static void DrawIndexed(const Ref& vertexArray, uint32_t indexCount = 0) { s_RendererAPI->DrawIndexed(vertexArray, indexCount); } private: - static std::unique_ptr s_RendererAPI; + static Scope s_RendererAPI; }; class Renderer @@ -88,8 +88,8 @@ namespace Donut static void OnWindowResize(uint32_t width, uint32_t height); - static void Submit(const std::shared_ptr& shader, - const std::shared_ptr& vertexArray, + static void Submit(const Ref& shader, + const Ref& vertexArray, const glm::mat4& transform, const glm::mat4& viewProjection); diff --git a/src/Rendering/Shader.cpp b/src/Rendering/Shader.cpp index e38ce65..8266e00 100644 --- a/src/Rendering/Shader.cpp +++ b/src/Rendering/Shader.cpp @@ -1,8 +1,8 @@ #include "Shader.h" #include "Renderer.h" + #include "Platform/OpenGL/OpenGLShader.h" #include "Platform/Vulkan/VulkanShader.h" -#include namespace Donut { @@ -45,32 +45,32 @@ namespace Donut } } - void ShaderLibrary::Add(const std::shared_ptr& shader) + void ShaderLibrary::Add(const Ref& shader) { auto& name = shader->GetName(); Add(name, shader); } - void ShaderLibrary::Add(const std::string& name, const std::shared_ptr& shader) + void ShaderLibrary::Add(const std::string& name, const Ref& shader) { m_Shaders[name] = shader; } - std::shared_ptr ShaderLibrary::Load(const std::string& filepath) + Ref ShaderLibrary::Load(const std::string& filepath) { - auto shader = std::shared_ptr(Shader::Create(filepath)); + auto shader = Ref(Shader::Create(filepath)); Add(shader); return shader; } - std::shared_ptr ShaderLibrary::Load(const std::string& name, const std::string& filepath) + Ref ShaderLibrary::Load(const std::string& name, const std::string& filepath) { - auto shader = std::shared_ptr(Shader::Create(filepath)); + auto shader = Ref(Shader::Create(filepath)); Add(name, shader); return shader; } - std::shared_ptr ShaderLibrary::Get(const std::string& name) + Ref ShaderLibrary::Get(const std::string& name) { if (Exists(name)) return m_Shaders[name]; diff --git a/src/Rendering/Shader.h b/src/Rendering/Shader.h index ef0bdb1..e2d8d2a 100644 --- a/src/Rendering/Shader.h +++ b/src/Rendering/Shader.h @@ -1,8 +1,9 @@ #pragma once +#include "Core/Memory.h" + #include #include -#include #include #define SHADER_STORAGE_BARRIER_BIT 0x00002000 @@ -42,15 +43,15 @@ namespace Donut class ShaderLibrary { public: - void Add(const std::shared_ptr& shader); - void Add(const std::string& name, const std::shared_ptr& shader); - std::shared_ptr Load(const std::string& filepath); - std::shared_ptr Load(const std::string& name, const std::string& filepath); + void Add(const Ref& shader); + void Add(const std::string& name, const Ref& shader); + Ref Load(const std::string& filepath); + Ref Load(const std::string& name, const std::string& filepath); - std::shared_ptr Get(const std::string& name); + Ref Get(const std::string& name); bool Exists(const std::string& name) const; private: - std::unordered_map> m_Shaders; + std::unordered_map> m_Shaders; }; }; diff --git a/src/Rendering/Texture.cpp b/src/Rendering/Texture.cpp index 3a86dba..a96b816 100644 --- a/src/Rendering/Texture.cpp +++ b/src/Rendering/Texture.cpp @@ -1,18 +1,19 @@ #include "Texture.h" #include "Renderer.h" -#include "../Platform/OpenGL/OpenGLTexture.h" -#include "../Platform/Vulkan/VulkanTexture.h" + +#include "Platform/OpenGL/OpenGLTexture.h" +#include "Platform/Vulkan/VulkanTexture.h" namespace Donut { - std::shared_ptr Texture2D::Create(uint32_t width, uint32_t height) + Ref Texture2D::Create(uint32_t width, uint32_t height) { switch (Renderer::GetAPI()) { case RendererAPI::API::OpenGL: - return std::make_shared(width, height); + return CreateRef(width, height); case RendererAPI::API::Vulkan: - return std::make_shared(width, height); + return CreateRef(width, height); case RendererAPI::API::None: return nullptr; default: @@ -20,14 +21,14 @@ namespace Donut } } - std::shared_ptr Texture2D::Create(const std::string& path) + Ref Texture2D::Create(const std::string& path) { switch (Renderer::GetAPI()) { case RendererAPI::API::OpenGL: - return std::make_shared(path); + return CreateRef(path); case RendererAPI::API::Vulkan: - return std::make_shared(path); + return CreateRef(path); case RendererAPI::API::None: return nullptr; default: diff --git a/src/Rendering/Texture.h b/src/Rendering/Texture.h index 4d150c0..21941ee 100644 --- a/src/Rendering/Texture.h +++ b/src/Rendering/Texture.h @@ -1,6 +1,7 @@ #pragma once -#include +#include "Core/Memory.h" + #include #include @@ -27,7 +28,7 @@ namespace Donut : public Texture { public: - static std::shared_ptr Create(uint32_t width, uint32_t height); - static std::shared_ptr Create(const std::string& path); + static Ref Create(uint32_t width, uint32_t height); + static Ref Create(const std::string& path); }; }; \ No newline at end of file diff --git a/src/Rendering/VertexArray.cpp b/src/Rendering/VertexArray.cpp index 2b2549c..366675f 100644 --- a/src/Rendering/VertexArray.cpp +++ b/src/Rendering/VertexArray.cpp @@ -1,5 +1,6 @@ #include "VertexArray.h" #include "Renderer.h" + #include "Platform/OpenGL/OpenGLVertexArray.h" #include "Platform/Vulkan/VulkanVertexArray.h" diff --git a/src/Rendering/VertexArray.h b/src/Rendering/VertexArray.h index 8ae61a7..10fff89 100644 --- a/src/Rendering/VertexArray.h +++ b/src/Rendering/VertexArray.h @@ -1,8 +1,10 @@ #pragma once +#include "Core/Memory.h" + #include "VertexBuffer.h" #include "IndexBuffer.h" -#include + #include namespace Donut @@ -15,11 +17,11 @@ namespace Donut virtual void Bind() const = 0; virtual void Unbind() const = 0; - virtual void AddVertexBuffer(const std::shared_ptr& vertexBuffer) = 0; - virtual void SetIndexBuffer(const std::shared_ptr& indexBuffer) = 0; + virtual void AddVertexBuffer(const Ref& vertexBuffer) = 0; + virtual void SetIndexBuffer(const Ref& indexBuffer) = 0; - virtual const std::vector>& GetVertexBuffers() const = 0; - virtual const std::shared_ptr& GetIndexBuffer() const = 0; + virtual const std::vector>& GetVertexBuffers() const = 0; + virtual const Ref& GetIndexBuffer() const = 0; static VertexArray* Create(); }; diff --git a/src/Rendering/VertexBuffer.cpp b/src/Rendering/VertexBuffer.cpp index 57b4d87..a7e2504 100644 --- a/src/Rendering/VertexBuffer.cpp +++ b/src/Rendering/VertexBuffer.cpp @@ -1,5 +1,6 @@ #include "VertexBuffer.h" #include "Renderer.h" + #include "Platform/OpenGL/OpenGLVertexBuffer.h" #include "Platform/Vulkan/VulkanVertexBuffer.h" -- cgit v1.3