0
我正在用CALayers
寻找一种在NSView
中显示浮雕图像的方法。这是可能的?如果没有,我如何才能从CALayers
创建浮雕?用CALayers制作浮雕演示文稿
我正在用CALayers
寻找一种在NSView
中显示浮雕图像的方法。这是可能的?如果没有,我如何才能从CALayers
创建浮雕?用CALayers制作浮雕演示文稿
我决定用下面的代码的问题:
layerLeft=[[QTCaptureLayer alloc]initWithSession:sessionLeft];
layerRight=[[QTCaptureLayer alloc]initWithSession:sessionRight];
[anaglyphView setWantsLayer:YES];
CALayer *layer = [CALayer layer];
CALayer *containerLeft = [CALayer layer];
CALayer *containerRight = [CALayer layer];
[anaglyphView setLayer:layer];
layer.backgroundColor = CGColorCreateGenericRGB(0,0,0,1);
layer.borderColor=CGColorCreateGenericRGB(1,1,1,1);
layer.borderWidth=4.0;
layer.frame = NSRectToCGRect(NSMakeRect(0, 0, 1000, 1000));
[anaglyphView.layer addSublayer:containerLeft];
[anaglyphView.layer addSublayer:containerRight];
[containerLeft addSublayer:layerLeft];
[containerRight addSublayer:layerRight];
containerLeft.frame=NSRectToCGRect(NSMakeRect(50, 50, 600, 400));
containerRight.frame=NSRectToCGRect(NSMakeRect(50, 50, 600, 400));
layerLeft.frame = NSRectToCGRect(NSMakeRect(0, 0, 600, 400));
layerRight.frame=NSRectToCGRect(NSMakeRect(0, 0, 600, 400));
rightFilter = [CIFilter filterWithName:@"CIColorMatrix"];
leftFilter = [CIFilter filterWithName:@"CIColorMatrix"];
CIFilter *compositeFilter = [CIFilter filterWithName:@"CIDifferenceBlendMode"];
CGFloat zero[4] = {0.0f, 0.0f, 0.0f, 0.0f};
CGFloat r[4] = {1, 0.0f, 0.0f, 0.0f};
CGFloat g[4] = {0.0f, 1, 0.0f, 0.0f};
CGFloat b[4] = {0.0f, 0.0f, 1, 0.0f};
CGFloat a[4] = {0.0f, 0.0f, 0.0f, 1};
[rightFilter setValue:nil forKey:@"inputImage"];
[rightFilter setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputRVector"];
[rightFilter setValue:[CIVector vectorWithValues:g count:4] forKey:@"inputGVector"];
[rightFilter setValue:[CIVector vectorWithValues:b count:4] forKey:@"inputBVector"];
[rightFilter setValue:[CIVector vectorWithValues:a count:4] forKey:@"inputAVector"];
[rightFilter setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputBiasVector"];
[leftFilter setValue:nil forKey:@"inputImage"];
[leftFilter setValue:[CIVector vectorWithValues:r count:4] forKey:@"inputRVector"];
[leftFilter setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputGVector"];
[leftFilter setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputBVector"];
[leftFilter setValue:[CIVector vectorWithValues:a count:4] forKey:@"inputAVector"];
[leftFilter setValue:[CIVector vectorWithValues:zero count:4] forKey:@"inputBiasVector"];
layerRight.compositingFilter =rightFilter;
layerLeft.compositingFilter =leftFilter;
containerRight.compositingFilter=compositeFilter;
凡anaglyphView是的NSView和layerLeft和layerRight两个QTCapureLayer。 我为每个通道(左/右)创建了2个图层,一个用于滤色,另一个用于复合滤波。我不知道CIDifferenceBlendMode复合滤镜是否是制作浮雕的最佳选择,但它似乎起作用。