patternTexture property

RenderTexture patternTexture

Implementation

RenderTexture get patternTexture {
  // try to get the patternTexture from the texture cache
  _patternTexture ??= _patternTextureCache.getObject(_renderTextureQuad);

  // try to use the original texture as patternTexture
  if (_patternTexture == null && _renderTextureQuad.isEquivalentToSource) {
    _patternTexture = _renderTextureQuad.renderTexture;
  }

  // clone the original texture to get the patternTexture
  if (_patternTexture == null) {
    final pixelRatio = _renderTextureQuad.pixelRatio;
    final textureWidth = _renderTextureQuad.offsetRectangle.width;
    final textureHeight = _renderTextureQuad.offsetRectangle.height;
    final renderTexture = RenderTexture(textureWidth, textureHeight, 0);
    final renderTextureQuad = renderTexture.quad.withPixelRatio(pixelRatio);
    final renderContext = RenderContextCanvas(renderTexture.canvas);
    final renderState =
        RenderState(renderContext, renderTextureQuad.drawMatrix);
    renderState.renderTextureQuad(_renderTextureQuad);
    _patternTexture = renderTexture;
    _patternTextureCache.addObject(_renderTextureQuad, _patternTexture);
  }

  return _patternTexture!;
}