Index: trunk/src/gl/gl_context.cc
===================================================================
--- trunk/src/gl/gl_context.cc	(revision 515)
+++ trunk/src/gl/gl_context.cc	(revision 520)
@@ -125,4 +125,16 @@
 	}
 }
+
+nv::image_data* nv::gl_context::dump_image( image_format f, image_data* reuse )
+{
+	NV_ASSERT_ALWAYS( f.type   == nv::UBYTE, "Bad format passed to dump" );
+	NV_ASSERT_ALWAYS( f.format == nv::RGB || f.format == nv::RGBA, "Bad format passed to dump" );
+	glPixelStorei( GL_PACK_ALIGNMENT, 1 );
+	image_data* result = reuse;
+	if ( !result ) result = new image_data( f, ivec2( m_viewport.z, m_viewport.w ) );
+	glReadPixels( 0, 0, m_viewport.z, m_viewport.w, f.format == nv::RGB ? GL_RGB : GL_RGBA, datatype_to_gl_enum( f.type ), const_cast< uint8* >( result->get_data() ) );
+	return result;
+}
+
 
 const framebuffer_info* nv::gl_context::get_framebuffer_info( framebuffer f ) const
