From 4172869e54093eee6e1595ebe0fa55c9fe98aef7 Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 15 Aug 2025 03:18:29 +0200 Subject: [help]: Complete first geodesic 3d raytracing --- src/Platform/OpenGL/OpenGLRendererAPI.cpp | 23 +++++++++++++++++++++++ src/Platform/OpenGL/OpenGLRendererAPI.h | 10 ++++++++++ src/Platform/OpenGL/OpenGLUniformBuffer.h | 7 +++---- 3 files changed, 36 insertions(+), 4 deletions(-) (limited to 'src/Platform/OpenGL') 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, 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, uint32_t indexCount = 0) override; + + virtual void DrawArrays(uint32_t vertexCount, + uint32_t first = 0) override; + virtual void DrawLines(const Ref& 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; }; }; -- cgit v1.3