1#ifndef GLDRAWFRAMEBUFFER
2#define GLDRAWFRAMEBUFFER
19 if(!glIsFramebuffer(buffer))
21 glGenFramebuffers(1, &buffer);
24 if(!glIsTexture(texture))
26 glGenTextures(1, &texture);
32 if (glIsFramebuffer(buffer))
34 glDeleteFramebuffers(1, &buffer);
37 if (glIsTexture(texture))
39 glDeleteTextures(1, &texture);
49 glBindFramebuffer(GL_FRAMEBUFFER, buffer);
59 glBindFramebuffer(GL_READ_FRAMEBUFFER, buffer);
60 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
61 glBlitFramebuffer(0, 0, resX, resY, 0, 0, resX, resY, GL_COLOR_BUFFER_BIT, GL_NEAREST);
62 glBindFramebuffer(GL_FRAMEBUFFER, 0);
69 glClearColor(clearColour.r, clearColour.g, clearColour.b, clearColour.a);
72 void clear() { glClear(GL_COLOR_BUFFER_BIT); }
82 msaaSamples = samples;
89 glBindFramebuffer(GL_FRAMEBUFFER, buffer);
90 glActiveTexture(GL_TEXTURE0);
92 glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, texture);
95 glTexStorage2DMultisample
97 GL_TEXTURE_2D_MULTISAMPLE,
105 glTexImage2DMultisample
107 GL_TEXTURE_2D_MULTISAMPLE,
115 glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0);
117 glFramebufferTexture2D
120 GL_COLOR_ATTACHMENT0,
121 GL_TEXTURE_2D_MULTISAMPLE,
129 static const bool isMSAA() {
return msaaSamples > 0;}
133 static bool initialised;
135 static uint8_t msaaSamples;
137 static GLuint buffer, texture;
139 static uint16_t resX, resY;
141 static glm::vec4 clearColour;
Definition glDrawFramebuffer.h:13
void bind()
Definition glDrawFramebuffer.h:43
glDrawFramebuffer()
Definition glDrawFramebuffer.h:17
static const bool isMSAA()
Definition glDrawFramebuffer.h:129
void setMSAA(uint8_t samples)
Definition glDrawFramebuffer.h:80
void destroy()
Definition glDrawFramebuffer.h:30
void setResolution(glm::vec2 res)
Definition glDrawFramebuffer.h:74
void clear()
Definition glDrawFramebuffer.h:72
void blit()
Definition glDrawFramebuffer.h:53
void setClear(glm::vec4 c)
Definition glDrawFramebuffer.h:66
GLuint glError(const std::string msg="")
Definition gl.cpp:35
GLuint glBufferStatus(const std::string msg="")
Definition gl.cpp:7