18 auto coverage =
pass->GetElementsCoverage(std::nullopt);
19 if (!coverage.has_value() || coverage->IsEmpty()) {
25 RenderToTexture(context,
ISize(coverage.value().size), translate);
36 auto texture = RenderToTexture(context, size);
37 return texture ? std::make_shared<Image>(texture) :
nullptr;
40 std::shared_ptr<Texture> Picture::RenderToTexture(
43 std::optional<const Matrix> translate)
const {
46 pass->IterateAllEntities([&translate](
auto& entity) ->
bool {
47 auto matrix = translate.has_value()
48 ? translate.value() * entity.GetTransformation()
49 : entity.GetTransformation();
50 entity.SetTransformation(matrix);
59 RenderTargetAllocator render_target_allocator =
60 RenderTargetAllocator(impeller_context->GetResourceAllocator());
62 if (impeller_context->GetCapabilities()->SupportsOffscreenMSAA()) {
65 render_target_allocator,
67 "Picture Snapshot MSAA",
69 kDefaultColorAttachmentConfigMSAA
70 #ifndef FML_OS_ANDROID
78 render_target_allocator,
82 #ifndef FML_OS_ANDROID
88 if (!target.IsValid()) {
93 if (!context.
Render(*
this, target)) {
98 auto texture = target.GetRenderTargetTexture();