I have seen many examples on the Internet ( for example ) that do the following
- Create and Link FBO
- Create and link BUFFERS (texture, rendering, depth, stencil)
- Then UnBind BUFFERS
- To work with FBO-Bind FBO, do the work, then UnBind FBO
- However, also Bind texture BUFFER for reading, writing, etc. with texture BUFFER
- BUT NEVER NEVER SEE re-linking other BUFFERS (visualization, depth, stencil) Why?
An example of creating BUFFERS and bind / unbind (Below is the code, for example, only to show what I explained and works fine),
glGenFramebuffersEXT(1, &fboId);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);
glGenRenderbuffersEXT(1, &rboId);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rboId);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, TEXTURE_WIDTH, TEXTURE_HEIGHT);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
if(useDepthBuffer) {
glGenRenderbuffersEXT(1, &rboIdDepth);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rboIdDepth);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, TEXTURE_WIDTH, TEXTURE_HEIGHT);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
}
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, rboId);
if(useDepthBuffer)
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, rboIdDepth);
printFramebufferInfo();
bool status = checkFramebufferStatus();
if(!status)
fboUsed = false;
.
.
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
1. ( / FBO)?
2. ?
: attach- > - > UnBind