Завершение работы приложения из-за необработанного исключения "NSInternalInconsistencyException", причина: "Ошибка ссылки шейдера фильтра"
Мне нужно показать в прямом эфире камеры. Я использовал GPUImage, когда я выполняю код, я получаю эту ошибку. Я сослался на некоторый документ и написал код в viewDidLoad. когда я открываю приложение, оно падает.
- (void)viewDidLoad
{
[super viewDidLoad];
GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"];
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height)];
// Add the view somewhere so it's visible
[videoCamera addTarget:customFilter];
[customFilter addTarget:filteredVideoView];
[videoCamera startCameraCapture];
}
Журнал:
Failed to load vertex shader
Failed to compile fragment shader
Program link log: ERROR: OpenGL ES 2.0 requires exactly one vertex and one fragment shader to validly link.
Fragment shader compile log: (null)
Vertex shader compile log: (null)
*** Assertion failure in -[GPUImageFilter initWithVertexShaderFromString:fragmentShaderFromString:], /Users/ranganathagv/Projects/MobileApp/test/iOS/View/28May_GPU/BradLarson-GPUImage-f67cbd9/framework/Source/GPUImageFilter.m:76
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Filter shader link failed'
1 ответ
Убедитесь, что шейдеры были добавлены в фазу сборки Copy Bundle Resources. По умолчанию XCode пытается скомпилировать их как файлы исходного кода, а не включать их в ваш комплект приложений, как они должны быть.