diff options
| author | hachem <im@hachem.wtf> | 2025-08-15 03:18:29 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-15 03:18:29 +0200 |
| commit | 4172869e54093eee6e1595ebe0fa55c9fe98aef7 (patch) | |
| tree | 2004c518688e6db529e437fe3f0120ad0fcc1dd9 /src/Platform | |
| parent | bc2d88c799cb3913a5defe4ea9ddea9c56814349 (diff) | |
[help]: Complete first geodesic 3d raytracing
Diffstat (limited to 'src/Platform')
| -rw-r--r-- | src/Platform/OpenGL/OpenGLRendererAPI.cpp | 23 | ||||
| -rw-r--r-- | src/Platform/OpenGL/OpenGLRendererAPI.h | 10 | ||||
| -rw-r--r-- | src/Platform/OpenGL/OpenGLUniformBuffer.h | 7 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanRendererAPI.cpp | 100 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanRendererAPI.h | 44 | ||||
| -rw-r--r-- | src/Platform/Vulkan/VulkanUniformBuffer.h | 7 |
6 files changed, 126 insertions, 65 deletions
diff --git a/src/Platform/OpenGL/OpenGLRendererAPI.cpp b/src/Platform/OpenGL/OpenGLRendererAPI.cpp index d181203..cd54f82 100644 --- a/src/Platform/OpenGL/OpenGLRendererAPI.cpp +++ b/src/Platform/OpenGL/OpenGLRendererAPI.cpp @@ -83,4 +83,27 @@ namespace Donut glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_INT, nullptr); glBindTexture(GL_TEXTURE_2D, 0); } + + void OpenGLRendererAPI::DrawArrays(uint32_t vertexCount, uint32_t first) + { + glDrawArrays(GL_TRIANGLES, first, vertexCount); + } + + void OpenGLRendererAPI::DrawLines(const Ref<VertexArray>& vertexArray, uint32_t indexCount) + { + uint32_t count = indexCount ? indexCount : vertexArray->GetIndexBuffer()->GetCount(); + glDrawElements(GL_LINES, count, GL_UNSIGNED_INT, nullptr); + } + + void OpenGLRendererAPI::BindTexture(uint32_t textureID, uint32_t slot) + { + glActiveTexture(GL_TEXTURE0 + slot); + glBindTexture(GL_TEXTURE_2D, textureID); + } + + void OpenGLRendererAPI::BindImageTexture(uint32_t textureID, uint32_t slot, bool readOnly) + { + glBindImageTexture(slot, textureID, 0, GL_FALSE, 0, + readOnly ? GL_READ_ONLY : GL_WRITE_ONLY, GL_RGBA8); + } }; diff --git a/src/Platform/OpenGL/OpenGLRendererAPI.h b/src/Platform/OpenGL/OpenGLRendererAPI.h index f6b9fb4..0576db8 100644 --- a/src/Platform/OpenGL/OpenGLRendererAPI.h +++ b/src/Platform/OpenGL/OpenGLRendererAPI.h @@ -26,5 +26,15 @@ namespace Donut virtual void DrawIndexed(const Ref<VertexArray>& vertexArray, uint32_t indexCount = 0) override; + + virtual void DrawArrays(uint32_t vertexCount, + uint32_t first = 0) override; + virtual void DrawLines(const Ref<VertexArray>& vertexArray, + uint32_t indexCount = 0) override; + virtual void BindTexture(uint32_t textureID, + uint32_t slot = 0) override; + virtual void BindImageTexture(uint32_t textureID, + uint32_t slot = 0, + bool readOnly = false) override; }; }; diff --git a/src/Platform/OpenGL/OpenGLUniformBuffer.h b/src/Platform/OpenGL/OpenGLUniformBuffer.h index 6e7fac1..fd96f37 100644 --- a/src/Platform/OpenGL/OpenGLUniformBuffer.h +++ b/src/Platform/OpenGL/OpenGLUniformBuffer.h @@ -12,11 +12,10 @@ namespace Donut virtual ~OpenGLUniformBuffer(); virtual void SetData(const void* data, uint32_t size, uint32_t offset = 0) override; - virtual void Bind(uint32_t binding) override; - + virtual void Bind(uint32_t binding) override; private: uint32_t m_RendererID = 0; - uint32_t m_Size = 0; - uint32_t m_Binding = 0; + uint32_t m_Size = 0; + uint32_t m_Binding = 0; }; }; diff --git a/src/Platform/Vulkan/VulkanRendererAPI.cpp b/src/Platform/Vulkan/VulkanRendererAPI.cpp index 6f0e73e..0dc9f0e 100644 --- a/src/Platform/Vulkan/VulkanRendererAPI.cpp +++ b/src/Platform/Vulkan/VulkanRendererAPI.cpp @@ -2,53 +2,73 @@ namespace Donut { - void VulkanRendererAPI::Init() - { - // TODO(Hachem): Implement Vulkan renderer API initialization - } + void VulkanRendererAPI::Init() + { + // TODO(Hachem): Implement Vulkan renderer API initialization + } - void VulkanRendererAPI::SetViewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) - { - // TODO(Hachem): Implement Vulkan viewport setting - } + void VulkanRendererAPI::SetViewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) + { + // TODO(Hachem): Implement Vulkan viewport setting + } - void VulkanRendererAPI::SetClearColor(const glm::vec4& color) - { - // TODO(Hachem): Implement Vulkan clear color setting - } + void VulkanRendererAPI::SetClearColor(const glm::vec4& color) + { + // TODO(Hachem): Implement Vulkan clear color setting + } - void VulkanRendererAPI::Clear() - { - // TODO(Hachem): Implement Vulkan clear - } + void VulkanRendererAPI::Clear() + { + // TODO(Hachem): Implement Vulkan clear + } - void VulkanRendererAPI::EnableDepthTest() - { - // TODO(Hachem): Implement Vulkan depth test enabling - } + void VulkanRendererAPI::EnableDepthTest() + { + // TODO(Hachem): Implement Vulkan depth test enabling + } - void VulkanRendererAPI::DisableDepthTest() - { - // TODO(Hachem): Implement Vulkan depth test disabling - } + void VulkanRendererAPI::DisableDepthTest() + { + // TODO(Hachem): Implement Vulkan depth test disabling + } - void VulkanRendererAPI::SetFaceCulling(bool enabled) - { - // TODO(Hachem): Implement Vulkan face culling setting - } + void VulkanRendererAPI::SetFaceCulling(bool enabled) + { + // TODO(Hachem): Implement Vulkan face culling setting + } - void VulkanRendererAPI::EnableBlending() - { - // TODO(Hachem): Implement Vulkan blending enabling - } + void VulkanRendererAPI::EnableBlending() + { + // TODO(Hachem): Implement Vulkan blending enabling + } - void VulkanRendererAPI::DisableBlending() - { - // TODO(Hachem): Implement Vulkan blending disabling - } + void VulkanRendererAPI::DisableBlending() + { + // TODO(Hachem): Implement Vulkan blending disabling + } - void VulkanRendererAPI::DrawIndexed(const Ref<VertexArray>& vertexArray, uint32_t indexCount) - { - // TODO(Hachem): Implement Vulkan indexed drawing - } + void VulkanRendererAPI::DrawIndexed(const Ref<VertexArray>& vertexArray, uint32_t indexCount) + { + // TODO(Hachem): Implement Vulkan indexed drawing + } + + void VulkanRendererAPI::DrawArrays(uint32_t vertexCount, uint32_t first) + { + // TODO(Hachem): Implement Vulkan array drawing + } + + void VulkanRendererAPI::DrawLines(const Ref<VertexArray>& vertexArray, uint32_t indexCount) + { + // TODO(Hachem): Implement Vulkan line drawing + } + + void VulkanRendererAPI::BindTexture(uint32_t textureID, uint32_t slot) + { + // TODO(Hachem): Implement Vulkan texture binding + } + + void VulkanRendererAPI::BindImageTexture(uint32_t textureID, uint32_t slot, bool readOnly) + { + // TODO(Hachem): Implement Vulkan image texture binding + } }; diff --git a/src/Platform/Vulkan/VulkanRendererAPI.h b/src/Platform/Vulkan/VulkanRendererAPI.h index 8ba3942..dba7fe6 100644 --- a/src/Platform/Vulkan/VulkanRendererAPI.h +++ b/src/Platform/Vulkan/VulkanRendererAPI.h @@ -5,22 +5,32 @@ namespace Donut { - class VulkanRendererAPI - : public RendererAPI - { - public: - virtual void Init() override; - virtual void SetViewport(uint32_t x, uint32_t y, - uint32_t width, uint32_t height) override; - virtual void SetClearColor(const glm::vec4& color) override; - virtual void Clear() override; - virtual void EnableDepthTest() override; - virtual void DisableDepthTest() override; - virtual void SetFaceCulling(bool enabled) override; - virtual void EnableBlending() override; - virtual void DisableBlending() override; + class VulkanRendererAPI + : public RendererAPI + { + public: + virtual void Init() override; + virtual void SetViewport(uint32_t x, uint32_t y, + uint32_t width, uint32_t height) override; + virtual void SetClearColor(const glm::vec4& color) override; + virtual void Clear() override; + virtual void EnableDepthTest() override; + virtual void DisableDepthTest() override; + virtual void SetFaceCulling(bool enabled) override; + virtual void EnableBlending() override; + virtual void DisableBlending() override; - virtual void DrawIndexed(const Ref<VertexArray>& vertexArray, - uint32_t indexCount = 0) override; - }; + virtual void DrawIndexed(const Ref<VertexArray>& vertexArray, + uint32_t indexCount = 0) override; + + virtual void DrawArrays(uint32_t vertexCount, + uint32_t first = 0) override; + virtual void DrawLines(const Ref<VertexArray>& vertexArray, + uint32_t indexCount = 0) override; + virtual void BindTexture(uint32_t textureID, + uint32_t slot = 0) override; + virtual void BindImageTexture(uint32_t textureID, + uint32_t slot = 0, + bool readOnly = false) override; + }; }; diff --git a/src/Platform/Vulkan/VulkanUniformBuffer.h b/src/Platform/Vulkan/VulkanUniformBuffer.h index a2e9ce2..bbf152d 100644 --- a/src/Platform/Vulkan/VulkanUniformBuffer.h +++ b/src/Platform/Vulkan/VulkanUniformBuffer.h @@ -11,10 +11,9 @@ namespace Donut virtual ~VulkanUniformBuffer(); virtual void SetData(const void* data, uint32_t size, uint32_t offset = 0) override; - virtual void Bind(uint32_t binding) override; - + virtual void Bind(uint32_t binding) override; private: - uint32_t m_Size = 0; - uint32_t m_Binding = 0; + uint32_t m_Size; + uint32_t m_Binding; }; }; |
