26 void BeginScene(
const LSceneCamera& Camera,
const glm::mat4& Transform);
39 void DrawLine(
const glm::vec2& P0,
const glm::vec2& P1,
const glm::vec4& Color);
41 void DrawQuad(
const glm::mat4& Transform,
const glm::vec4& Color);
42 void DrawQuad(
const glm::vec2& Position,
const glm::vec2& Size,
const glm::vec4& Color);
43 void DrawQuad(
const glm::vec3& Position,
const glm::vec2& Size,
const glm::vec4& Color);
45 void DrawQuad(
const glm::vec2& Position,
const glm::vec2& Size,
TObjectPtr<LTexture> Texture,
const glm::vec4& TintColor);
46 void DrawQuad(
const glm::vec3& Position,
const glm::vec2& Size,
TObjectPtr<LTexture> Texture,
const glm::vec4& TintColor);
49 void SetLineWidth(
const float NewLineWidth);
51 FORCEINLINE
FQuadVertex*& GetWriteableQuadBuffer() {
return QuadVertexBufferPtr; }
52 FORCEINLINE
FLineVertex*& GetWriteableLineBuffer() {
return LineVertexBufferPtr; }
56 uint32_t DrawCalls = 0;
57 uint32_t QuadCount = 0;
58 uint32_t QuadVertexArray_RendererID = 0;
59 uint32_t QuadVertexBuffer_RendererID = 0;
60 uint32_t LineCount = 0;
62 uint32_t GetTotalVertexCount()
const {
return QuadCount * 4; }
63 uint32_t GetTotalIndexCount()
const {
return QuadCount * 6; }
67 inline static constexpr glm::vec2 TextureCoords[] = {
75 static constexpr int MaxTextureSlots = 32;
76 static constexpr int MaxArrayTextures = 10;
78 FRenderer2DSpecification Specification{};
79 FRendererStatistics Statistics{};
81 const uint32_t MaxVertices = 0;
82 const uint32_t MaxIndices = 0;
83 const uint32_t MaxLineVertices = 0;
84 const uint32_t MaxLineIndices = 0;
87 std::array<TObjectPtr<LTexture2D>, MaxTextureSlots> TextureSlots;
89 std::array<TObjectPtr<LArrayTexture>, MaxArrayTextures> ArrayTextures;
92 uint32_t QuadIndexCount = 0;
93 FQuadVertex* QuadVertexBufferBase{};
94 FQuadVertex* QuadVertexBufferPtr{};
95 TObjectPtr<LRenderPass> QuadPass{};
96 TObjectPtr<LMaterial> QuadMaterial;
97 TObjectPtr<LShader> QuadShader{};
98 TObjectPtr<LIndexBuffer> QuadIndexBuffer{};
99 TObjectPtr<LVertexBuffer> QuadVertexBuffer;
100 glm::vec4 QuadVertexPositions[4] = {};
103 float LineWidth = 3.0f;
104 uint32_t LineIndexCount = 0;
105 TObjectPtr<LVertexBuffer> LineVertexBuffer{};
106 TObjectPtr<LShader> LineShader{};
107 FLineVertex* LineVertexBufferBase{};
108 FLineVertex* LineVertexBufferPtr{};
109 TObjectPtr<LIndexBuffer> LineIndexBuffer{};
110 TObjectPtr<LMaterial> LineMaterial{};
112 TObjectPtr<LShader> TextureShader{};
113 TObjectPtr<LTexture2D> WhiteTexture{};
115 TObjectPtr<LRenderCommandBuffer> RenderCommandBuffer;
119 glm::mat4 ViewProjection{};
121 FCameraData CameraBuffer{};
122 TObjectPtr<LUniformBuffer> CameraUniformBuffer;