renderFromCamera method

  1. @internal
  2. @override
void renderFromCamera(
  1. Canvas canvas
)
override

Internal rendering method invoked by the CameraComponent.

Implementation

@internal
@override
void renderFromCamera(Canvas canvas) {
  final camera = CameraComponent3D.currentCamera!;
  final viewport = camera.viewport;

  final devicePixelRatio = MediaQuery.of(game.buildContext!).devicePixelRatio;
  final size = Size(
    viewport.virtualSize.x * devicePixelRatio,
    viewport.virtualSize.y * devicePixelRatio,
  );

  device
    // Set the view matrix
    ..view.setFrom(camera.viewMatrix)
    // Set the projection matrix
    ..projection.setFrom(camera.projectionMatrix)
    ..begin(size);

  culled = 0;

  _prepareDevice();
  // ignore: invalid_use_of_internal_member
  super.renderFromCamera(canvas);

  final image = device.end();
  canvas.drawImageRect(
    image,
    Offset.zero & size,
    (-viewport.virtualSize / 2).toOffset() &
        Size(viewport.virtualSize.x, viewport.virtualSize.y),
    _paint,
  );
  image.dispose();
}