src/framebuffers.js
function bindFramebufferInfo(gl, framebufferInfo, target) {
  target = target || gl.FRAMEBUFFER;
  if (framebufferInfo) {
    gl.bindFramebuffer(target, framebufferInfo.framebuffer);
    gl.viewport(0, 0, framebufferInfo.width, framebufferInfo.height);
  } else {
    gl.bindFramebuffer(target, null);
    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
  }
}
function bindFramebufferInfo(gl, framebufferInfo, target) {
  target = target || gl.FRAMEBUFFER;
  if (framebufferInfo) {
    gl.bindFramebuffer(target, framebufferInfo.framebuffer);
    gl.viewport(0, 0, framebufferInfo.width, framebufferInfo.height);
  } else {
    gl.bindFramebuffer(target, null);
    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
  }
}
function bindFramebufferInfo ( gl , framebufferInfo , target ) { target = target || gl . FRAMEBUFFER ; if ( framebufferInfo ) { gl . bindFramebuffer ( target , framebufferInfo . framebuffer ) ; gl . viewport ( 0 , 0 , framebufferInfo . width , framebufferInfo . height ) ; } else { gl . bindFramebuffer ( target , null ) ; gl . viewport ( 0 , 0 , gl . drawingBufferWidth , gl . drawingBufferHeight ) ; } }
Binds a framebuffer

This function pretty much soley exists because I spent hours
trying to figure out why something I wrote wasn't working only
to realize I forget to set the viewport dimensions.
My hope is this function will fix that.

It is effectively the same as

gl.bindFramebuffer(gl.FRAMEBUFFER, someFramebufferInfo.framebuffer);
gl.viewport(0, 0, someFramebufferInfo.width, someFramebufferInfo.height);

@param {WebGLRenderingContext} gl the WebGLRenderingContext
@param {module:twgl.FramebufferInfo} [framebufferInfo] a framebufferInfo as returned from {@link module:twgl.createFramebufferInfo}.
If not passed will bind the canvas.
@param {number} [target] The target. If not passed `gl.FRAMEBUFFER` will be used.
@memberOf module:twgl/framebuffers
Binds a framebuffer