setTexture(texture, options = {}) {
    if (texture && texture.image) {
      const {
        image,
        rect
      } = texture;
      texture = image;

      if (options.rect) {
        for (let i = 0; i < options.rect.length; i++) {
          rect[i] = options.rect[i];
        }
      }

      options.rect = rect;
    }

    if (!this[_fill]) {
      this.setFill();
    }

    this.setUniforms({
      u_texSampler: texture
    });

    if (this[_mesh]) {
      this[_applyTexture](this[_mesh], options);
    }

    this[_texOptions] = options;
    return this;
  }
options: {
      scale: false,
      repeat: false,
      rotated: false,
      rect: [10, 10],
      srcRect: [...],
      hidden: false,
    }