aboutsummaryrefslogtreecommitdiff
path: root/src/Platform/OpenGL
diff options
context:
space:
mode:
Diffstat (limited to 'src/Platform/OpenGL')
-rw-r--r--src/Platform/OpenGL/OpenGLRendererAPI.cpp23
-rw-r--r--src/Platform/OpenGL/OpenGLRendererAPI.h10
-rw-r--r--src/Platform/OpenGL/OpenGLUniformBuffer.h7
3 files changed, 36 insertions, 4 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;
};
};