@Override
  public final void setTransform(/*@Nonnull*/ final float[] value, final boolean transpose) {

    Check.notNull(value, "Transform value cannot be null");
    Check.state(!orthoMode, "Must be in 3D mode");

    // Render any outstanding quads first
    if (!pipeline.isEmpty()) {
      fireEvent(EventType.AUTOMATIC_FLUSH);
      final GL gl = GLContext.getCurrentGL();
      flush(gl);
    }

    // Store the transform
    System.arraycopy(value, 0, this.transform, 0, value.length);
    this.transposed = transpose;

    // Change the transform
    if (inRenderCycle) {
      final GL gl = GLContext.getCurrentGL();
      doSetTransform3d(gl, value, transpose);
    } else {
      transformDirty = true;
    }
  }
  @Override
  public final void setColor(final float r, final float g, final float b, final float a) {

    // Check if already has the color
    if (hasColor(r, g, b, a)) {
      return;
    }

    // Render any outstanding quads first
    if (!pipeline.isEmpty()) {
      fireEvent(EventType.AUTOMATIC_FLUSH);
      final GL gl = GLContext.getCurrentGL();
      flush(gl);
    }

    // Store the color
    this.r = r;
    this.g = g;
    this.b = b;
    this.a = a;

    // Change the color
    if (inRenderCycle) {
      final GL gl = GLContext.getCurrentGL();
      doSetColor(gl, r, g, b, a);
    } else {
      colorDirty = true;
    }
  }