Supported Hardware

Series5, Series5XT, Series6, Series6XE, Series6XT

Valid APIs

OpenGL ES 1.x


This extension defines a simple interface for drawing to rendering destinations other than the buffers provided to the GL by the windowing-system. This allows things to be drawn independently of VSync and enables multi-pass algorithms that previously would have been limited to using CopyTexImage2D on the main framebuffer. Framebuffers allow you to attach colour, depth and stencil attachments to be used as drawing buffers, and then bind the framebuffer to be drawn into. Subsequent draw operations will then take place in this framebuffer, until the main framebuffer is rebound. Textures attached in this way can then be read back in subsequent drawing operations. This extension also introduces "Renderbuffers", which work similarly to a texture but are managed by the GPU entirely, and cannot be read back later. They are typically used for things like a depth buffer where the end result does not matter and will never need flushing.


This extension is part of the OpenGL ES 1.x Extension Pack Specification and is core functionality in OpenGL ES 2.0 and 3.0.

Registry Link


void Initialise() 
	// Create a framebuffer object 
	GLint framebufferObject; 
	glGenFramebuffersOES(1, &framebufferObject); 
	// Bind the framebuffer object to the current state 
	glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebufferObject) 
	// Create a depth renderbuffer 
	GLint renderBuffer; 
	glGenRenderbuffersOES(1, &renderBuffer); 
	// Bind and initialise it. 
	glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderBuffer); 
	glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, 1024, 1024); 
	// Attach the renderbuffer to the framebuffer 
						GL_RENDERBUFFER_OES,  renderBuffer); 
	// Create a colour texture 
	GLint texture; 
	glGenTextures(1, &texture); 
	// Bind and initialise the texture 
	glBindTexture(GL_TEXTURE_2D, texture); 
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 1024, 0, GL_RGBA, 
	// Attach the texture to the framebuffer 
								GL_TEXTURE_2D, texture, 0); 
	// Check framebuffer is complete 
		// An error has occurred 
void Render() 
	// Bind the framebuffer for rendering 
	glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebufferObject) 
	// Draw something 
	// Bind the default (EGL provided) framebuffer to actually draw to the screen 
	glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0) 
	// Draw something else, generally using the result of the framebuffer object's render. 
	// SwapBuffers