void FrameBufferObject::Begin(GraphicsState & glstate, std::ostream & error_output, float viewscale) { CheckForOpenGLErrors("before FBO begin", error_output); assert(inited); assert(framebuffer_object > 0); assert(!textures.empty()); glstate.BindFramebuffer(GL_FRAMEBUFFER, framebuffer_object); CheckForOpenGLErrors("FBO bind to framebuffer", error_output); FrameBufferTexture * tex = textures.back(); if (tex->GetTarget() == FrameBufferTexture::CUBEMAP) { glFramebufferTexture2D(GL_FRAMEBUFFER, tex->GetAttachment(), tex->GetSide(), tex->GetId(), 0); CheckForOpenGLErrors("FBO cubemap side attachment", error_output); } assert(CheckStatus(error_output)); glstate.SetViewport(int(tex->GetW() * viewscale), int(tex->GetH() * viewscale)); CheckForOpenGLErrors("during FBO begin", error_output); }