예제 #1
0
/*
============
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);
	}
}
예제 #2
0
/*
* 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;
}
예제 #3
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;
}
예제 #4
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;
	}
}