21 SLint wrap) : width(w), height(h)
23 GLint previousFrameBuffer;
24 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &previousFrameBuffer);
27 glGenFramebuffers(1, &
fboID);
28 glBindFramebuffer(GL_FRAMEBUFFER,
fboID);
30 glGenTextures(1, &
texID);
31 glBindTexture(GL_TEXTURE_2D,
texID);
34 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter);
35 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter);
36 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap);
37 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap);
39 glTexImage2D(GL_TEXTURE_2D,
49 glFramebufferTexture2D(GL_FRAMEBUFFER,
55 glGenRenderbuffers(1, &
rboID);
56 glBindRenderbuffer(GL_RENDERBUFFER,
rboID);
59 glRenderbufferStorage(GL_RENDERBUFFER,
64 glFramebufferRenderbuffer(GL_FRAMEBUFFER,
69 glBindRenderbuffer(GL_RENDERBUFFER, 0);
70 glBindFramebuffer(GL_FRAMEBUFFER,
73 if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
74 std::cerr <<
"FBO failed to initialize correctly." << std::endl;
79 glDeleteTextures(1, &
texID);
80 glDeleteFramebuffers(1, &
fboID);
85 const int textureUnit)
87 glActiveTexture(GL_TEXTURE0 + textureUnit);
88 glBindTexture(GL_TEXTURE_2D,
texID);
89 glUniform1i(glGetUniformLocation(progId,
90 glSamplerName.c_str()),
Wraps an OpenGL framebuffer object.
Singleton class for global render state.
void activateAsTexture(int progId, const SLstring &samplerName, int textureUnit=0)
SLGLFbo(SLuint w, SLuint h, SLenum magFilter=GL_NEAREST, SLenum minFilter=GL_NEAREST, SLint internalFormat=GL_RGB16F, SLint format=GL_FLOAT, SLint wrap=GL_REPEAT)