46 lines
994 B
C++
46 lines
994 B
C++
#pragma once
|
|
|
|
#include <d3d11.h>
|
|
#include <renderer/framebuffer.hpp>
|
|
#include <wrl.h>
|
|
|
|
namespace lt {
|
|
|
|
class dxSharedContext;
|
|
|
|
class dxFramebuffer: public Framebuffer
|
|
{
|
|
public:
|
|
dxFramebuffer(
|
|
const FramebufferSpecification &specification,
|
|
Ref<dxSharedContext> sharedContext
|
|
);
|
|
|
|
auto get_color_attachment() -> void * override
|
|
{
|
|
return (void *)m_shader_resource_view.Get();
|
|
}
|
|
|
|
void bind_as_target(const glm::vec4 &clearColor) override;
|
|
|
|
void bind_as_resource() override;
|
|
|
|
void resize(const glm::uvec2 &size) override;
|
|
|
|
private:
|
|
Ref<dxSharedContext> m_context;
|
|
|
|
FramebufferSpecification m_specification;
|
|
|
|
Microsoft::WRL::ComPtr<ID3D11RenderTargetView> m_render_target_view;
|
|
|
|
Microsoft::WRL::ComPtr<ID3D11Texture2D> m_color_attachment;
|
|
|
|
Microsoft::WRL::ComPtr<ID3D11Texture2D> m_depth_stencil_attachment;
|
|
|
|
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_shader_resource_view;
|
|
|
|
Microsoft::WRL::ComPtr<ID3D11DepthStencilView> m_depth_stencil_view;
|
|
};
|
|
|
|
} // namespace lt
|