2013-10-15 18 views
6

Bir iOS kamera uygulaması geliştirmek için GPUIImage kütüphanesi kullanıyorum.OpenGL ile gizemli uygulama kazası

- (void)presentBufferForDisplay; 
{ 
    [self.context presentRenderbuffer:GL_RENDERBUFFER]; 
} 

Ne muhtemelen bu kaza nedeni olabilir: Uygulamanın 2-3 dakika sonra askıya Bazen Xcode bana yöntemde hatlarına işaret ederek, uygulamanın sırasında çökme verir? Gerçekten çok uzun bir kameram var ve kodun kendisi GPUImageContext sınıfında. Burada ne yapıyorum ki?

+0

Xcode, her zaman kazaya neden olan çizgiyi işaret etmez. Örneğin, bir uygulama çöktüğünde, her zaman hatada olmamasına rağmen, ana iş parçacığına işaret eder. Yani hata muhtemelen size kod render biraz geliyor. – BlueSpud

cevap

9

Uygulamanız arka planda çalışırken (askıya alındı) OpenGL ES'ye erişemezsiniz. GPUImage, yaptığı her şey için OpenGL ES kullanır. Uygulamanızın, GPUImage ile çalıştığı (filtreleme videosu, görüntü işleme) uygulamanızın arka plana geçişini tamamlamadan önce yapıldığından emin olmanız gerekir.

Sen UIApplicationWillResignActiveNotification dinlemek veya arka geçiş için ilgili temsilci geri aramalar doldurun ve orada (fotoğraf makinenizin girişinde -pauseCameraCapture yöntemiyle) herhangi bir kamera yakalama duraklatabilir veya işleme bitmesini (beklemeniz gerekiyor GPUImage seri gönderme sırasına bir eşzamanlı gönderimin bununla ilgileneceğine inanıyorum).

Bunun için ilgili tartışma, GitHub sorunları sayfasında şu adreste bulunabilir: https://github.com/BradLarson/GPUImage/issues/197 ve ilgili çeşitli konularda.