2022-04-05 20:49:15 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "../defines.hpp"
|
2025-05-09 22:16:21 +01:00
|
|
|
#include "../helpers/Format.hpp"
|
2022-04-05 20:49:15 +02:00
|
|
|
#include "Texture.hpp"
|
|
|
|
|
|
|
|
|
|
class CFramebuffer {
|
2022-12-16 17:17:31 +00:00
|
|
|
public:
|
2024-06-08 10:07:59 +02:00
|
|
|
CFramebuffer();
|
2022-07-12 23:11:34 +02:00
|
|
|
~CFramebuffer();
|
|
|
|
|
|
2024-06-08 10:07:59 +02:00
|
|
|
bool alloc(int w, int h, uint32_t format = GL_RGBA);
|
2024-11-02 15:26:25 +00:00
|
|
|
void addStencil(SP<CTexture> tex);
|
2024-06-08 10:07:59 +02:00
|
|
|
void bind();
|
2025-02-08 01:46:26 +01:00
|
|
|
void unbind();
|
2024-06-08 10:07:59 +02:00
|
|
|
void release();
|
|
|
|
|
void reset();
|
|
|
|
|
bool isAllocated();
|
2024-11-02 15:26:25 +00:00
|
|
|
SP<CTexture> getTexture();
|
|
|
|
|
SP<CTexture> getStencilTex();
|
|
|
|
|
GLuint getFBID();
|
2022-04-05 20:49:15 +02:00
|
|
|
|
2025-05-05 23:44:49 +02:00
|
|
|
Vector2D m_size;
|
2025-05-09 22:16:21 +01:00
|
|
|
DRMFormat m_drmFormat = 0 /* DRM_FORMAT_INVALID */;
|
2022-04-05 20:49:15 +02:00
|
|
|
|
2024-11-02 15:26:25 +00:00
|
|
|
private:
|
2025-05-05 23:44:49 +02:00
|
|
|
SP<CTexture> m_tex;
|
|
|
|
|
GLuint m_fb = -1;
|
|
|
|
|
bool m_fbAllocated = false;
|
2022-04-05 20:49:15 +02:00
|
|
|
|
2025-05-05 23:44:49 +02:00
|
|
|
SP<CTexture> m_stencilTex;
|
2024-11-02 15:26:25 +00:00
|
|
|
|
|
|
|
|
friend class CRenderbuffer;
|
2025-02-08 01:46:26 +01:00
|
|
|
};
|