/* ============ FBO_Shutdown ============ */ void FBO_Shutdown(void) { int i, j; FBO_t *fbo; ri.Printf(PRINT_ALL, "------- FBO_Shutdown -------\n"); if(!glRefConfig.framebufferObject) return; FBO_Bind(NULL); for(i = 0; i < tr.numFBOs; i++) { fbo = tr.fbos[i]; for(j = 0; j < glRefConfig.maxColorAttachments; j++) { if(fbo->colorBuffers[j]) qglDeleteRenderbuffersEXT(1, &fbo->colorBuffers[j]); } if(fbo->depthBuffer) qglDeleteRenderbuffersEXT(1, &fbo->depthBuffer); if(fbo->stencilBuffer) qglDeleteRenderbuffersEXT(1, &fbo->stencilBuffer); if(fbo->frameBuffer) qglDeleteFramebuffersEXT(1, &fbo->frameBuffer); } }
/* * RFB_DeleteObject * * Delete framebuffer object along with attached render buffer */ static void RFB_DeleteObject( r_fbo_t *fbo ) { if( !fbo ) { return; } if( fbo->depthRenderBuffer ) { qglDeleteRenderbuffersEXT( 1, &fbo->depthRenderBuffer ); } if( fbo->stencilRenderBuffer && ( fbo->stencilRenderBuffer != fbo->depthRenderBuffer ) ) { qglDeleteRenderbuffersEXT( 1, &fbo->stencilRenderBuffer ); } if( fbo->colorRenderBuffer ) { qglDeleteRenderbuffersEXT( 1, &fbo->colorRenderBuffer ); } if( fbo->objectID ) { qglDeleteFramebuffersEXT( 1, &fbo->objectID ); } fbo->depthRenderBuffer = 0; fbo->stencilRenderBuffer = 0; fbo->colorRenderBuffer = 0; fbo->objectID = 0; }
/** * @brief Delete framebuffer object along with attached render buffer */ void R_DeleteFBObject (r_framebuffer_t *buf) { if (buf->depth) qglDeleteRenderbuffersEXT(1, &buf->depth); buf->depth = 0; if (buf->textures) { int i; for (i = 0; i < buf->nTextures; i++) R_FreeFBOTexture(buf->textures[i]); Mem_Free(buf->textures); } buf->textures = 0; if (buf->fbo) qglDeleteFramebuffersEXT(1, &buf->fbo); buf->fbo = 0; }
/* * RFB_DeleteObject * * Delete framebuffer object along with attached render buffer */ static void RFB_DeleteObject( r_fbo_t *fbo ) { if( fbo->depthRenderBuffer ) { qglDeleteRenderbuffersEXT( 1, &( fbo->depthRenderBuffer ) ); fbo->depthRenderBuffer = 0; } if( fbo->stencilRenderBuffer ) { qglDeleteRenderbuffersEXT( 1, &( fbo->stencilRenderBuffer ) ); fbo->stencilRenderBuffer = 0; } if( fbo->objectID ) { qglDeleteFramebuffersEXT( 1, &( fbo->objectID ) ); fbo->objectID = 0; } }