Я пытаюсь получить видео с камеры и сделать его с помощью CoreImage и OpenGL. Когда я запускаю его, я вижу свою картинку на экране, как я ожидаю, и затем получаю EXEC_BAD_ACCESS. Я использую ARC. iOS6 Beta1. Пожалуйста, помогите мне исправить это.cicontext drawImage: inRect: fromRect сбой в ios6
Обновление: оно работает в 5.1, но падает в 6.0. Я поднял все Exception Breakpoint, но я только вижу, что происходит в EXEC_BAD_ACESS presentRendedBuffer> gpus_ReturnGuiltyForHardwareRestart
Update2: Я удалил код камеры, связанные, и это по-прежнему падает.
Обновление 3: Когда я прокомментировал glClearColor & glClear команды, мое приложение перестало рушиться. Но я все еще хочу знать, как использовать OpenGL вместе с Core Image одновременно.
мой новый код просто:
@interface MGViewController() {
...
}
@property (strong, nonatomic) EAGLContext *glcontext;
@property (strong, nonatomic) CIContext *cicontext;
@property (strong, nonatomic) CIImage *ciimage;
- (void)viewDidLoad
{
[super viewDidLoad];
self.glcontext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
if (!self.glcontext) {
NSLog(@"Failed to create ES context");
} else {
self.cicontext = [CIContext contextWithEAGLContext:self.glcontext];
if (!self.cicontext){
NSLog(@"Failed to create CI context");
}
}
GLKView *view = (GLKView *)self.view;
view.context = self.glcontext;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
self.ciimage = [[CIImage alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"roomphoto" withExtension:@"png"]];
}
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
glClearColor(0.0, 0.5, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
[self.cicontext drawImage:self.ciimage
inRect:self.ciimage.extent
fromRect:self.ciimage.extent];
}
Этот код работает на iPhone & IPad 6.0 тренажере; сбой EXEC_BAD_ACCESS на iPad2 iOS 6.0 Beta2; и это дает мне только зеленый экран на IPad 1 & iPhone 4S IOS 5.1.1 с сообщениями в консоли:
Invalid shader program, probably due to exceeding hardware resourcesCould not load the kernel!Could not load the kernel! ...
Что может быть не так?
это авария на iOS5.x? –
Нет, он работает на моем iPhone с 5.1.1, но не работает на моем iPad с 6.0. Последний раз, когда я получил сообщение в консоли: Невозможно выполнить рендеринг с использованием GPU, потому что процесс выполняется в фоновом режиме. Невозможно вернуться к CPU при рендеринге на экран - рендеринг может завершиться неудачей! (lldb) Возможно ли это из-за drawImage: inRect: fromRect is async в iOS6, но синхронизация в iOS5? – Seify
Команда Хит + 6. Нажмите маленькую кнопку плюс в нижнем левом углу. Выберите «Добавить точку останова исключения». Нажмите «Сделано». Запустите приложение еще раз. Вы увидите точное местоположение исключения. Сообщите об этом здесь, чтобы получить лучшую обратную связь. –