'returns a Framebuffer Object to support offscreen rendering.
http://learnopengl.com/#!Advanced-OpenGL/Framebuffers'

def _init_framebuffer_object(self):

    fbo = gl.glGenFramebuffers(1)
    gl.glBindFramebuffer(gl.GL_FRAMEBUFFER, fbo)
    rbo = gl.glGenRenderbuffers(1)
    gl.glBindRenderbuffer(gl.GL_RENDERBUFFER, rbo)
    gl.glRenderbufferStorage(gl.GL_RENDERBUFFER, gl.GL_RGBA, self.init_width, self.init_height)
    gl.glFramebufferRenderbuffer(gl.GL_FRAMEBUFFER, gl.GL_COLOR_ATTACHMENT0, gl.GL_RENDERBUFFER, rbo)
    gl.glBindRenderbuffer(gl.GL_RENDERBUFFER, 0)
    gl.glBindFramebuffer(gl.GL_FRAMEBUFFER, 0)
    fbo_status = gl.glCheckFramebufferStatus(gl.GL_FRAMEBUFFER)
    if (fbo_status != gl.GL_FRAMEBUFFER_COMPLETE):
        gl.glDeleteFramebuffers([fbo])
        glfw.terminate()
        raise Exception(('Framebuffer    failed    status    check:    %s' % fbo_status))
    self._fbo = fbo
    self._rbo = rbo
