public GLSurfaceDesc RequestRenderBuffer( int format, int width, int height )
{
GLSurfaceDesc retval = new GLSurfaceDesc();
retval.Buffer = null; // Return 0 buffer if GL_NONE is requested
if ( format != Gl.GL_NONE )
{
RBFormat key = new RBFormat( format, width, height );
RBRef value;
if ( _renderBufferMap.TryGetValue( key, out value ) )
{
retval.Buffer = value.Buffer;
retval.ZOffset = 0;
// Increase refcount
value.Refcount++;
}
else
{
// New one
GLRenderBuffer rb = new GLRenderBuffer( format, width, height, 0 );
_renderBufferMap[ key ] = new RBRef( rb );
retval.Buffer = rb;
retval.ZOffset = 0;
}
}
LogManager.Instance.Write( "Requested renderbuffer with format " + format.ToString() + " of " + width.ToString() + "x" + height.ToString() + "." );
return retval;
}