Elevate Engine 1
Loading...
Searching...
No Matches
FrameBuffer.h
Go to the documentation of this file.
1#pragma once
2
3#include "glm/glm.hpp"
5
6
7#include <optional>
8#include <vector>
9
10namespace Elevate
11{
18
20 void* NativeHandle = nullptr; // TODO CHANGER POUR METTRE UNE INTERFACE DE BINDABLE OU AUTRE
21 bool IsRenderbuffer = false;
22 };
23
27
29 std::vector<FramebufferColorAttachment> ColorAttachments;
30 std::optional<FramebufferDepthAttachment> DepthAttachment;
31 std::optional<FramebufferDepthAttachment> Attachment;
32
33 glm::vec4 ClearColor = { 1.0f, 1.0f, 1.0f, 1.0f };
34 };
35
37 {
38 public:
39 virtual ~Framebuffer() = default;
40
41 virtual void Bind() const = 0;
42 virtual void Unbind() const = 0;
43 virtual void BlitFramebufferToScreen(uint32_t screenWidth, uint32_t screenHeight) const = 0;
44 virtual void Rescale(uint32_t width, uint32_t height) = 0;
45
46 inline void* GetNativeTextureHandle() const {
47 return m_texture->GetNativeHandle();
48 }
49
50 // TODO REMOVE
51 virtual uint32_t GetFrameBufferId() const = 0;
52
53 inline void SetClearColor(glm::vec4 color) { m_clearColor = color; }
54
55 virtual void Clear() const;
56
57 static Framebuffer* Create(uint32_t width = 1280, uint32_t height = 720);
58
59 protected:
61
62 protected:
63 TexturePtr m_texture; // TODO REMOVE
64 glm::vec4 m_clearColor = { 1.0f, 1.0f, 1.0f, 1.0f }; // TODO REMOVE
65 };
66}
67
virtual uint32_t GetFrameBufferId() const =0
virtual void Clear() const
virtual ~Framebuffer()=default
static Framebuffer * Create(uint32_t width=1280, uint32_t height=720)
virtual void Unbind() const =0
virtual void BlitFramebufferToScreen(uint32_t screenWidth, uint32_t screenHeight) const =0
Framebuffer(TexturePtr tex)
Definition FrameBuffer.h:60
virtual void Bind() const =0
virtual void Rescale(uint32_t width, uint32_t height)=0
void * GetNativeTextureHandle() const
Definition FrameBuffer.h:46
void SetClearColor(glm::vec4 color)
Definition FrameBuffer.h:53
std::shared_ptr< Texture > TexturePtr
Definition Texture.h:13
FramebufferColorAttachment(TexturePtr tex)
Definition FrameBuffer.h:16
std::optional< FramebufferDepthAttachment > Attachment
Definition FrameBuffer.h:31
std::optional< FramebufferDepthAttachment > DepthAttachment
Definition FrameBuffer.h:30
std::vector< FramebufferColorAttachment > ColorAttachments
Definition FrameBuffer.h:29