diff options
-rw-r--r-- | fb.c | 30 | ||||
-rw-r--r-- | fb.h | 6 | ||||
-rw-r--r-- | main.c | 18 | ||||
-rw-r--r-- | makefile | 1 |
4 files changed, 39 insertions, 16 deletions
@@ -0,0 +1,30 @@ +#include <GL/glew.h> +#include <GLFW/glfw3.h> + +#include "fb.h" +#include "die.h" +#include "consts.h" + +GLuint init_fb() { + GLuint fbo; + glGenFramebuffers(1, &fbo); + + // configure newly created framebuffer + glBindFramebuffer(GL_FRAMEBUFFER, fbo); + + GLuint buffer; + glGenTextures(1, &buffer); + glBindTexture(GL_TEXTURE_2D, buffer); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, RES_H, RES_V, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, buffer, 0); + if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) + die("can't initialize framebuffer??\n"); + + // use default framebuffer again + glBindFramebuffer(GL_FRAMEBUFFER, 0); + + return fbo; +} + @@ -0,0 +1,6 @@ +#pragma once + +#include <GL/glew.h> + +GLuint init_fb(); + @@ -3,6 +3,7 @@ #include <GLFW/glfw3.h> #include "consts.h" +#include "fb.h" #include "shader.h" #include "die.h" #include "uniform.h" @@ -81,22 +82,7 @@ int main(int argc, char** argv) { frag_shader(pass2_frag, pass2_frag_size) ); - GLuint fbo; - glGenFramebuffers(1, &fbo); - glBindFramebuffer(GL_FRAMEBUFFER, fbo); - - GLuint last_frame; - glGenTextures(1, &last_frame); - glBindTexture(GL_TEXTURE_2D, last_frame); - // todo: what to do when the size changes? - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, RES_H, RES_V, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, last_frame, 0); - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - die("can't initialize framebuffer??\n"); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - + GLuint fbo = init_fb(); // main draw loop while (!glfwWindowShouldClose(window)) { @@ -18,6 +18,7 @@ main: pass1_frag.o main: fill_vert.o main: pass2_frag.o main: uniform.o +main: fb.o # fix compile order main.o: fill_vert.h |