iOS 在每一帧应用 CATransform3D

iOS Apply CATransform3D on every frame

我正在捕获视频输出的每一帧并通过处理它,我将一个 CALayer 添加到一个叠加层,它应该根据处理帧的结果进行转换。

那个CALayer基本上就知道怎么画箭头了。 如果我只是在它工作的每一帧上添加 CALayer,但如果我对其应用变换,它根本不会显示。

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{   
    dispatch_async(dispatch_get_main_queue(), ^(void)
    {
        firstLayer.transform = CATransform3DMakeRotation(M_PI_2, 1, 0, 0);

        [firstLayer setNeedsDisplay];
    });

}

怎么了?如何使叠加层显示在每一帧上转换的图层?

您正在围绕 X 轴旋转您的图层 π/2 弧度 (90°),使您的图层看起来完全不可见,因为您正从侧面看它。

我假设您打算将它在 Z 轴上旋转 90°,您可以将此轴视为指向屏幕的 in/out。如果这是你想要做的,那么绕着这个轴旋转,像这样:

firstLayer.transform = CATransform3DMakeRotation(M_PI_2, 0, 0, 1);