render method
Draw into canvas, whose coordinates are viewport pixels, what
view sees.
Implementation
@override
void render(Canvas canvas, FrameView view) {
final size = view.viewportSize;
if (size.isEmpty) return;
if (aids?.skippedViews.contains(view) ?? false) return;
update(view);
if (!_gpu && !renderWithoutGpu) {
_drawNote(canvas, size, _failure?.toString() ?? unsupportedReason!);
return;
}
final surface = _surfaceFor(view);
try {
final done = renderer.render(scene, _view, surface);
lastFrame = done;
unawaited(done.then((_) {}, onError: _fail));
} on Object catch (error) {
_fail(error);
return;
} finally {
// The renderer is shared (a model's thumbnail, say): an editor's view
// settings stay with its views.
renderer
..viewMode = RenderViewMode.lit
..clipPlane = null;
}
final image = surface.image;
if (image == null) return;
canvas.drawImageRect(
image,
Rect.fromLTWH(0, 0, image.width.toDouble(), image.height.toDouble()),
Offset.zero & size,
Paint()..filterQuality = FilterQuality.low,
);
image.dispose();
}