LkEngine 0.1.2
 
Loading...
Searching...
No Matches
OpenGLFramebuffer.h
1#pragma once
2
3#include "LkEngine/Renderer/Framebuffer.h"
4
5
6namespace LkEngine {
7
9 {
10 public:
11 LOpenGLFramebuffer(const FFramebufferSpecification& InSpecification);
12 LOpenGLFramebuffer() = delete;
14
15 virtual void Invalidate() override;
16 virtual int ReadPixel(const uint32_t AttachmentIndex, const int PosX, const int PosY) override;
17 virtual void ClearAttachment(uint32_t AttachmentIndex, int value) override;
18 virtual void Clear() override;
19 virtual uint32_t GetColorAttachmentRendererID(uint32_t Index = 0) const override;
20
21 virtual void Resize(const uint32_t NewWidth, const uint32_t NewHeight, bool bForceRecreate = false) override;
22 virtual void AddResizeCallback(const FResizeCallback& InFunction) override;
23 virtual TObjectPtr<LImage> GetImage(uint32_t AttachmentIndex = 0) const override;
24
25 virtual TObjectPtr<LImage> GetDepthImage() const override;
26 virtual size_t GetColorAttachmentCount() const override;
27
28 FORCEINLINE virtual bool HasDepthAttachment() const override
29 {
30 return (m_DepthAttachment >= 0);
31 }
32
33 virtual void BindTexture(const uint32_t AttachmentIndex = 0, const uint32_t Slot = 0) const override;
34 virtual void Bind() const override;
35 virtual void Unbind() const override;
36
37 FORCEINLINE const FFramebufferSpecification& GetSpecification() const override
38 {
39 return m_Specification;
40 }
41
42 FORCEINLINE virtual uint32_t GetWidth() const override { return m_Width; }
43 FORCEINLINE virtual uint32_t GetHeight() const override { return m_Height; }
44 FORCEINLINE virtual uint64_t GetSize() const override { return (m_Width * m_Height); }
45
46 FORCEINLINE virtual LRendererID GetRendererID() const override { return RendererID; }
47 FORCEINLINE virtual LRendererID& GetRendererID() override { return RendererID; }
48
49 static void TargetSwapChain();
50
51 private:
52 LRendererID RendererID;
53
54 uint64_t m_Width{};
55 uint64_t m_Height{};
56
57 /* FIXME: */
58 unsigned int m_TextureAttachment0 = -1;
59 unsigned int m_TextureAttachment1 = -1;
60 unsigned int m_DepthAttachment = 0;
61
62 glm::vec4 m_ClearColor{};
63 std::vector<TObjectPtr<LImage2D>> m_ColorAttachments{};
64 std::vector<uint32_t> m_ColorAttachmentRendererIDs{};
65
66 FFramebufferSpecification m_Specification{};
67 FFramebufferTextureSpecification m_DepthAttachmentSpecification{};
68 std::vector<FFramebufferTextureSpecification> m_ColorAttachmentSpecifications{};
69
71 };
72
73
74}
Definition Framebuffer.h:95
Definition OpenGLFramebuffer.h:9
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
uint32_t LRendererID
Definition CoreTypes.h:30
Definition Asset.h:11
Definition Framebuffer.h:61