LkEngine 0.1.2
 
Loading...
Searching...
No Matches
OpenGLRenderer.h
1#pragma once
2
4
5#include "OpenGLPipeline.h"
6#include "OpenGLFramebuffer.h"
7#include "OpenGLContext.h"
8#include "OpenGLVertexBuffer.h"
9#include "OpenGLIndexBuffer.h"
10#include "OpenGLRenderPass.h"
11#include "OpenGLRenderCommandBuffer.h"
12#include "OpenGLShader.h"
13#include "OpenGLTexture.h"
14#include "OpenGLArrayTexture.h"
15#include "OpenGLImGuiLayer.h"
16
17
18namespace LkEngine {
19
21 {
22 public:
24 ~LOpenGLRenderer() = default;
25
26 virtual void Initialize() override;
27 virtual void Destroy() override;
28
29 virtual void BeginFrame() override;
30 virtual void EndFrame() override;
31 virtual void Clear() override;
32
33 virtual void RenderMesh(TObjectPtr<LMesh>& InMesh, TObjectPtr<LShader>& InShader, const glm::mat4& InTransform) override;
34 virtual void RenderGeometry(TObjectPtr<LRenderCommandBuffer> RenderCommandBuffer,
35 TObjectPtr<LPipeline> Pipeline,
36 TObjectPtr<LVertexBuffer> InVertexBuffer,
37 TObjectPtr<LIndexBuffer> InIndexBuffer,
38 const glm::mat4& Transform,
39 uint32_t IndexCount) override;
40
41 virtual void BeginRenderPass(TObjectPtr<LRenderCommandBuffer> RenderCommandBuffer,
42 TObjectPtr<LRenderPass> renderPass,
43 bool bExplicitClear = false) override;
44 virtual void EndRenderPass(TObjectPtr<LRenderCommandBuffer> RenderCommandBuffer) override;
45
46 virtual void RenderGeometry(TObjectPtr<LRenderCommandBuffer> RenderCommandBuffer,
47 TObjectPtr<LPipeline> Pipeline,
48 TObjectPtr<LMaterial> Material,
49 TObjectPtr<LVertexBuffer> InVertexBuffer,
50 TObjectPtr<LIndexBuffer> InIndexBuffer,
51 const glm::mat4& Transform,
52 const uint32_t IndexCount) override;
53
54 virtual void Draw(LVertexBuffer& InVertexBuffer, const LShader& InShader) override;
55 virtual void Draw(const LVertexBuffer& VertexBuffer, const LIndexBuffer& IndexBuffer, const LShader& Shader);
56
57 virtual void SetPrimitiveTopology(const ERenderTopology InRenderTopology) override;
58 virtual void SetDepthFunction(const EDepthFunction InDepthFunction) override;
59 virtual void SetDepthEnabled(const bool Enabled) override;
60
61 virtual FRendererCapabilities& GetCapabilities() override;
62
63 #if 0
64 virtual void BindArrayTexture(const uint8_t Index) override;
65 virtual void BindArrayTexture(const EArrayTextureDimension Dimension) override;
66 #else
67 void BindArrayTexture(const uint8_t Index);
68 void BindArrayTexture(const EArrayTextureDimension Dimension);
69 TObjectPtr<LOpenGLArrayTexture> GetArrayTexture(const int Index);
70 #endif
71
72 private:
73 TObjectPtr<LOpenGLArrayTexture> GetArrayTextureWithDimension(const EArrayTextureDimension Dimension);
74
75 private:
76 int TopologyGL = GL_TRIANGLES;
77 static_assert(std::is_same_v<decltype(TopologyGL), decltype(GL_TRIANGLES)>);
78
79 TObjectPtr<LOpenGLContext> RenderContext{};
80
81 TObjectPtr<LOpenGLRenderPass> GeometricPass{};
82 TObjectPtr<LOpenGLRenderPass> RenderPass2D{};
83
85 };
86
87}
Renderer API.
Definition IndexBuffer.h:11
Definition OpenGLRenderer.h:21
virtual void Initialize() override
Initialize object.
Definition OpenGLRenderer.cpp:38
virtual void Destroy() override
Destroy object, releasing all resources.
Definition OpenGLRenderer.cpp:45
Definition RendererAPI.h:54
Definition Shader.h:44
Definition VertexBuffer.h:22
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
ERenderTopology
Definition RendererAPI.h:39
Definition Asset.h:11
Definition RendererCapabilities.h:10