Implement basic sRGB. Include frambuffers and postprocessing.

This commit is contained in:
4VRDriver
2020-09-20 16:45:41 +02:00
parent a5818dfd04
commit d641944119
15 changed files with 172 additions and 29 deletions

39
src/Framebuffer.cpp Normal file
View File

@@ -0,0 +1,39 @@
#include "Framebuffer.h"
#include <cstddef>
Framebuffer::Framebuffer(uint32_t width, uint32_t height) {
glGenFramebuffers(1, &FBO);
glGenTextures(2, textures);
glBindTexture(GL_TEXTURE_2D, textures[0]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, textures[1]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
bind();
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textures[0], 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, textures[1], 0);
unbind();
}
Framebuffer::~Framebuffer() {
glDeleteFramebuffers(1, &FBO);
glDeleteTextures(2, textures);
}
void Framebuffer::bind() {
glBindFramebuffer(GL_FRAMEBUFFER, FBO);
}
void Framebuffer::unbind() {
glBindFramebuffer(GL_FRAMEBUFFER, 0);
}