iOS在每个帧上应用CATransform3D

时间:2015-06-08 00:49:21

标签: ios core-animation avfoundation calayer

我正在捕捉视频输出的每一帧,并通过处理它,我将一个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];
    });

}

有什么问题?如何使叠加显示每帧上转换的图层?

1 个答案:

答案 0 :(得分:0)

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

我假设您打算在Z轴上旋转90°,您可以将其视为指向/退出屏幕的轴。如果这是您打算做的,那么转而围绕此轴旋转,如下所示:

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