29 scale_content ? playground_->GetContentScale() :
Vector2{1, 1};
30 std::shared_ptr<Image>
image = picture.ToImage(
32 ISize(size.width * content_scale.
x, size.height * content_scale.
y));
34 id<MTLTexture> metal_texture =
35 std::static_pointer_cast<TextureMTL>(
texture)->GetMTLTexture();
37 CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
38 CIImage* ciImage = [[CIImage alloc]
39 initWithMTLTexture:metal_texture
40 options:@{kCIImageColorSpace : (__bridge
id)color_space}];
41 CGColorSpaceRelease(color_space);
44 std::shared_ptr<Context> context = playground_->GetContext();
45 std::shared_ptr<ContextMTL> context_mtl =
46 std::static_pointer_cast<ContextMTL>(context);
47 CIContext* cicontext =
48 [CIContext contextWithMTLDevice:context_mtl->GetMTLDevice()];
51 CIImage* flipped = [ciImage
52 imageByApplyingOrientation:kCGImagePropertyOrientationDownMirrored];
54 CGImageRef cgImage = [cicontext createCGImage:flipped
55 fromRect:[ciImage extent]];