@Override
  public final void beginRendering(
      /*@Nonnull*/ final GL gl,
      final boolean ortho, /*@Nonnegative*/
      final int width, /*@Nonnegative*/
      final int height,
      final boolean disableDepthTest) {

    Check.notNull(gl, "GL cannot be null");
    Check.argument(width >= 0, "Width cannot be negative");
    Check.argument(height >= 0, "Height cannot be negative");

    // Perform hook
    doBeginRendering(gl, ortho, width, height, disableDepthTest);

    // Store text renderer state
    inRenderCycle = true;
    orthoMode = ortho;

    // Make sure the pipeline is made
    if (pipelineDirty) {
      setPipeline(gl, doCreateQuadPipeline(gl));
    }

    // Pass to quad renderer
    pipeline.beginRendering(gl);

    // Make sure color is correct
    if (colorDirty) {
      doSetColor(gl, r, g, b, a);
      colorDirty = false;
    }

    // Make sure transform is correct
    if (transformDirty) {
      doSetTransform3d(gl, transform, transposed);
      transformDirty = false;
    }
  }