#pragma once #include "Graphics/Framebuffer.h" #include "Base/Base.h" #include #include namespace Light { class dxSharedContext; class dxFramebuffer : public Framebuffer { private: Ref m_Context; FramebufferSpecification m_Specification; Microsoft::WRL::ComPtr m_RenderTargetView; Microsoft::WRL::ComPtr m_ColorAttachment; Microsoft::WRL::ComPtr m_DepthStencilAttachment; Microsoft::WRL::ComPtr m_ShaderResourceView; Microsoft::WRL::ComPtr m_DepthStencilView; public: dxFramebuffer(const FramebufferSpecification& specification, Ref sharedContext); inline void* GetColorAttachment() override { return (void*)m_ShaderResourceView.Get(); } void BindAsTarget(const glm::vec4& clearColor) override; void BindAsResource() override; void Resize(const glm::uvec2& size) override; }; }