Improve framebuffer handling

This commit is contained in:
Dimitri Lozeve 2021-02-25 19:23:45 +01:00
parent 9c50aa394c
commit 163cdd63d4
2 changed files with 7 additions and 8 deletions

View file

@ -57,7 +57,6 @@ int main(int argc, char *argv[]) {
glUniform1i(glGetUniformLocation(buffer_shader, "u_texture"), 0); glUniform1i(glGetUniformLocation(buffer_shader, "u_texture"), 0);
/* Framebuffer */ /* Framebuffer */
framebuffer = 0;
glGenFramebuffers(1, &framebuffer); glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
/* color attachment texture */ /* color attachment texture */
@ -108,6 +107,7 @@ int main(int argc, char *argv[]) {
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
/* Setup uniforms */ /* Setup uniforms */
glUseProgram(buffer_shader);
glUniform1ui(glGetUniformLocation(buffer_shader, "u_frame"), frame); glUniform1ui(glGetUniformLocation(buffer_shader, "u_frame"), frame);
glUniform1f(glGetUniformLocation(buffer_shader, "u_time"), time); glUniform1f(glGetUniformLocation(buffer_shader, "u_time"), time);
glUniform2f(glGetUniformLocation(buffer_shader, "u_resolution"), glUniform2f(glGetUniformLocation(buffer_shader, "u_resolution"),
@ -117,19 +117,19 @@ int main(int argc, char *argv[]) {
/* Draw the vertices */ /* Draw the vertices */
glBindVertexArray(VAO); glBindVertexArray(VAO);
glUseProgram(buffer_shader);
glBindTexture(GL_TEXTURE_2D, texture_color_buffer); glBindTexture(GL_TEXTURE_2D, texture_color_buffer);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
glBindVertexArray(0); glBindVertexArray(0);
}
/* bind back to default framebuffer */ /* bind back to default framebuffer */
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
glClearColor(1.0, 1.0, 1.0, 1.0); glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
/* Setup uniforms */ /* Setup uniforms */
glUseProgram(screen_shader);
glUniform1ui(glGetUniformLocation(screen_shader, "u_frame"), frame); glUniform1ui(glGetUniformLocation(screen_shader, "u_frame"), frame);
glUniform1f(glGetUniformLocation(screen_shader, "u_time"), time); glUniform1f(glGetUniformLocation(screen_shader, "u_time"), time);
glUniform2f(glGetUniformLocation(screen_shader, "u_resolution"), glUniform2f(glGetUniformLocation(screen_shader, "u_resolution"),
@ -139,7 +139,6 @@ int main(int argc, char *argv[]) {
/* Draw the vertices */ /* Draw the vertices */
glBindVertexArray(VAO); glBindVertexArray(VAO);
glUseProgram(screen_shader);
glBindTexture(GL_TEXTURE_2D, texture_color_buffer); glBindTexture(GL_TEXTURE_2D, texture_color_buffer);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
glBindVertexArray(0); glBindVertexArray(0);

View file

@ -88,12 +88,12 @@ unsigned int initialize_vertices() {
GL_STATIC_DRAW); GL_STATIC_DRAW);
/* position attribute */ /* position attribute */
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void *)0);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void *)0);
/* texture coord attribute */ /* texture coord attribute */
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float),
(void *)(3 * sizeof(float))); (void *)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
log_debug("Vertex data initialized successfully"); log_debug("Vertex data initialized successfully");