@Override
  public final void drawTexture(
      final GL gl,
      Texture texture,
      final float x,
      float y,
      float z,
      int texturex,
      int texturey,
      int width,
      int height,
      float scale) {
    Check.notNull(gl, "GL cannot be null");
    Check.notNull(texture, "Texture cannot be null");

    final TextureCoords coords =
        texture.getSubImageTexCoords(texturex, texturey, texturex + width, texturey + height);

    // Compute position and size
    quad.xl = x;
    quad.xr = quad.xl + (scale * width);
    quad.yb = y;
    quad.yt = quad.yb + (scale * height);
    quad.z = z;
    quad.sl = coords.left();
    quad.sr = coords.right();
    quad.tb = coords.bottom();
    quad.tt = coords.top();

    // Draw quad
    pipeline.addQuad(gl, quad);
  }