aboutsummaryrefslogtreecommitdiff
path: root/src/Rendering/Renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Rendering/Renderer.h')
-rw-r--r--src/Rendering/Renderer.h52
1 files changed, 40 insertions, 12 deletions
diff --git a/src/Rendering/Renderer.h b/src/Rendering/Renderer.h
index b2a44a4..d6c4154 100644
--- a/src/Rendering/Renderer.h
+++ b/src/Rendering/Renderer.h
@@ -20,23 +20,31 @@ namespace Donut
public:
virtual ~RendererAPI() = default;
- virtual void Init() = 0;
+ virtual void Init() = 0;
virtual void SetViewport(uint32_t x, uint32_t y,
- uint32_t width, uint32_t height) = 0;
- virtual void SetClearColor(const glm::vec4& color) = 0;
- virtual void Clear() = 0;
- virtual void EnableDepthTest() = 0;
- virtual void DisableDepthTest() = 0;
- virtual void SetFaceCulling(bool enabled) = 0;
- virtual void EnableBlending() = 0;
- virtual void DisableBlending() = 0;
+ uint32_t width, uint32_t height) = 0;
+ virtual void SetClearColor(const glm::vec4& color) = 0;
+ virtual void Clear() = 0;
+ virtual void EnableDepthTest() = 0;
+ virtual void DisableDepthTest() = 0;
+ virtual void SetFaceCulling(bool enabled) = 0;
+ virtual void EnableBlending() = 0;
+ virtual void DisableBlending() = 0;
virtual void DrawIndexed(const Ref<VertexArray>& vertexArray,
- uint32_t indexCount = 0) = 0;
+ uint32_t indexCount = 0) = 0;
+
+ virtual void DrawArrays(uint32_t vertexCount, uint32_t first = 0) = 0;
+ virtual void DrawLines(const Ref<VertexArray>& vertexArray,
+ uint32_t indexCount = 0) = 0;
+ virtual void BindTexture(uint32_t textureID, uint32_t slot = 0) = 0;
+ virtual void BindImageTexture(uint32_t textureID,
+ uint32_t slot = 0,
+ bool readOnly = false) = 0;
inline static API GetAPI() { return s_API; }
inline static void SetAPI(API api) { s_API = api; }
- static Ref<RendererAPI> Create();
+ static Scope<RendererAPI> Create();
private:
static API s_API;
};
@@ -94,8 +102,28 @@ namespace Donut
s_RendererAPI->DrawIndexed(vertexArray, indexCount);
}
+ inline static void DrawArrays(uint32_t vertexCount, uint32_t first = 0)
+ {
+ s_RendererAPI->DrawArrays(vertexCount, first);
+ }
+
+ inline static void DrawLines(const Ref<VertexArray>& vertexArray, uint32_t indexCount = 0)
+ {
+ s_RendererAPI->DrawLines(vertexArray, indexCount);
+ }
+
+ inline static void BindTexture(uint32_t textureID, uint32_t slot = 0)
+ {
+ s_RendererAPI->BindTexture(textureID, slot);
+ }
+
+ inline static void BindImageTexture(uint32_t textureID, uint32_t slot = 0, bool readOnly = false)
+ {
+ s_RendererAPI->BindImageTexture(textureID, slot, readOnly);
+ }
+
private:
- static Ref<RendererAPI> s_RendererAPI;
+ static Scope<RendererAPI> s_RendererAPI;
};
class Renderer