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!;
}