// newFBO will generate a new Frame Buffer Object for use with the canvas func newFBO(texture gl.Texture) (gl.Framebuffer, uint32) { // get currently bound fbo to reset to it later current_fbo := gl.GetBoundFramebuffer() framebuffer := gl.CreateFramebuffer() gl.BindFramebuffer(gl.FRAMEBUFFER, framebuffer) if texture.Valid() { gl.FramebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0) // Initialize the texture to transparent black. gl.ClearColor(0.0, 0.0, 0.0, 0.0) gl.Clear(gl.COLOR_BUFFER_BIT) } status := gl.CheckFramebufferStatus(gl.FRAMEBUFFER) // unbind framebuffer gl.BindFramebuffer(gl.FRAMEBUFFER, current_fbo) return framebuffer, uint32(status) }
// Clear will clear everything already rendered to the screen and set is all to // the *Color provided. func ClearC(c *Color) { gl.ClearColor(c[0], c[1], c[2], c[3]) gl.Clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) }