아이폰 OS 10.2.1에 장치를 업데이트 한 후 그것은 작동을 멈췄다. 몇 가지 프레임을 호출하는 중입니다. 응용 프로그램이 메모리 부족 경고로 충돌합니다. iOS 10.1.1 이하에서는 iPhone 5S와 같은 구형 장치에서도 부드럽게이 응용 프로그램을 실행합니다.
[_glkView bindDrawable];
if (self.eaglContext != [EAGLContext currentContext])
[EAGLContext setCurrentContext:self.eaglContext];
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
if (ciImage) {
[_ciContext drawImage:ciImage inRect:gvRect fromRect:dRect];
}
[_glkView display];
이것은 CIImage를 만드는 방법입니다.
- (CIImage*)ciImageFromPixelBuffer:(CVPixelBufferRef)pixelBuffer ofSampleBuffer:(CMSampleBufferRef)sampleBuffer {
CIImage *croppedImage = nil;
CFDictionaryRef attachments = CMCopyDictionaryOfAttachments(kCFAllocatorDefault, sampleBuffer, kCMAttachmentMode_ShouldPropagate);
CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer options:(NSDictionary *)attachments];
if (attachments)
CFRelease(attachments);
croppedImage = ciImage;
CIFilter *scaleFilter = [CIFilter filterWithName:@"CILanczosScaleTransform"];
[scaleFilter setValue:croppedImage forKey:@"inputImage"];
[scaleFilter setValue:[NSNumber numberWithFloat:self.zoom_Resize_Factor == 1 ? 0.25 : 0.5] forKey:@"inputScale"];
[scaleFilter setValue:[NSNumber numberWithFloat:1.0] forKey:@"inputAspectRatio"];
croppedImage = [scaleFilter valueForKey:@"outputImage"];
NSDictionary *options = @{(id)kCIImageAutoAdjustRedEye : @(false)};
NSArray *adjustments = [ciImage autoAdjustmentFiltersWithOptions:options];
for (CIFilter *filter in adjustments) {
[filter setValue:croppedImage forKey:kCIInputImageKey];
croppedImage = filter.outputImage;
}
CIFilter *selectedFilter = [VideoFilterFactory getFilterWithType:self.selectedFilterType]; //This line needs to be removed from here
croppedImage = [VideoFilterFactory applyFilter:selectedFilter OnImage:croppedImage];
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
return croppedImage;
}
여기 imgur 링크 VM 추적기와 OpenGL ES 악기의 http://imgur.com/a/u6Vyo이 될입니다. 그것을 이해하기 쉽게 만듭니다. 감사.
CIFilter 관련 처리를 생략하면 어떻게됩니까? –
좋아, glkview와 마찬가지로 pixelbuffer를 전달했지만 크래시가 발생하지 않았거나 효과가 없습니다. 그런데 왜 그렇게 된거야? – khunshan