2012-06-27 3 views
3

Я пытаюсь получить видео с камеры и сделать его с помощью 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! ... 

Что может быть не так?

+2

это авария на iOS5.x? –

+0

Нет, он работает на моем iPhone с 5.1.1, но не работает на моем iPad с 6.0. Последний раз, когда я получил сообщение в консоли: Невозможно выполнить рендеринг с использованием GPU, потому что процесс выполняется в фоновом режиме. Невозможно вернуться к CPU при рендеринге на экран - рендеринг может завершиться неудачей! (lldb) Возможно ли это из-за drawImage: inRect: fromRect is async в iOS6, но синхронизация в iOS5? – Seify

+0

Команда Хит + 6. Нажмите маленькую кнопку плюс в нижнем левом углу. Выберите «Добавить точку останова исключения». Нажмите «Сделано». Запустите приложение еще раз. Вы увидите точное местоположение исключения. Сообщите об этом здесь, чтобы получить лучшую обратную связь. –

ответ

2

Наконец-то мне удалось остановить приложение от сбоев. Я только что добавил glFlush() между командами gl и командой [cicontext drawImage ...].

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect 
{ 

     glClearColor(0.0, 0.5, 0.0, 1.0); 
     glClear(GL_COLOR_BUFFER_BIT); 

     glFlush(); 

     [self.cicontext drawImage:self.ciimage 
          inRect:self.ciimage.extent 
         fromRect:self.ciimage.extent]; 
} 

Результат не идеальный: я вижу некоторые дрожащие и т. Д., Но по крайней мере он работает. Буду признателен за подробный ответ, почему.

+0

Учитывая, что это работает, когда вы запускаете его на iOS 5.x, но разбился на бета-версию iOS 6.0, я думаю, что это довольно ясно, это бета-ошибка. Я рекомендую подать отчет об ошибке на странице https://bugreport.apple.com/, в идеале, с тестовым проектом, который воспроизводит это. Это должно помочь команде Core Image исправить это до правильной версии. –

+0

Спасибо за ваш совет, я попробую это. – Seify

+0

Yeap. Это была ошибка. – Seify

1

DrawImage: inRect: fromRect асинхронная в прошивке 6.

 Смежные вопросы

  • Нет связанных вопросов^_^