diff --git a/src/graphics/Framebuffer.cpp b/src/graphics/Framebuffer.cpp index f08a55f4..ab980b1b 100644 --- a/src/graphics/Framebuffer.cpp +++ b/src/graphics/Framebuffer.cpp @@ -3,46 +3,24 @@ #include #include "Texture.h" -Framebuffer::Framebuffer(int width, int height) : width(width), height(height) { - // glGenFramebuffers(1, &fbo); - // bind(); - // GLuint tex; - // glGenTextures(1, &tex); - // // glBindTexture(GL_TEXTURE_2D, tex); - // glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, tex); - // // glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr); - // glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGB, width, height, GL_TRUE); - // glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - // glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - // glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - // glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - // glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, tex, 0); - // texture = new Texture(tex, width, height); - // glGenRenderbuffers(1, &depth); - // glBindRenderbuffer(GL_RENDERBUFFER, depth); - // glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT24, width, height); - // // glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height); - // glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth); - // unbind(); - - - // bind(); - // glGenFramebuffers(1, &fbo); - // // create a multisampled color attachment texture - // unsigned int textureColorBufferMultiSampled; - // glGenTextures(1, &textureColorBufferMultiSampled); - // glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, textureColorBufferMultiSampled); - // glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGB, width, height, GL_TRUE); - // glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0); - // glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, textureColorBufferMultiSampled, 0); - // // create a (also multisampled) renderbuffer object for depth and stencil attachments - // unsigned int rbo; - // glGenRenderbuffers(1, &rbo); - // glBindRenderbuffer(GL_RENDERBUFFER, rbo); - // glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH24_STENCIL8, width, height); - // glBindRenderbuffer(GL_RENDERBUFFER, 0); - // glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo); - // unbind(); +Framebuffer::Framebuffer(uint width, uint height) : width(width), height(height) { + glGenFramebuffers(1, &fbo); + bind(); + GLuint tex; + glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_2D, tex); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); + texture = new Texture(tex, width, height); + glGenRenderbuffers(1, &depth); + glBindRenderbuffer(GL_RENDERBUFFER, depth); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth); + unbind(); } Framebuffer::~Framebuffer() { @@ -56,4 +34,4 @@ void Framebuffer::bind() { void Framebuffer::unbind() { glBindFramebuffer(GL_FRAMEBUFFER, 0); -} +} \ No newline at end of file diff --git a/src/graphics/Framebuffer.h b/src/graphics/Framebuffer.h index 3fd889f2..0214d0c2 100644 --- a/src/graphics/Framebuffer.h +++ b/src/graphics/Framebuffer.h @@ -1,16 +1,18 @@ #ifndef SRC_GRAPHICS_FRAMEBUFFER_H_ #define SRC_GRAPHICS_FRAMEBUFFER_H_ +#include "../typedefs.h" + class Texture; class Framebuffer { - unsigned int fbo; - unsigned int depth; + uint fbo; + uint depth; public: - int width; - int height; + uint width; + uint height; Texture* texture; - Framebuffer(int width, int height); + Framebuffer(uint width, uint height); ~Framebuffer(); void bind();