カメラからビデオを取得し、CoreImage と OpenGL を使用してレンダリングしようとしています。実行すると、期待どおりに画面に自分の写真が表示され、EXEC_BAD_ACCESS が表示されます。ARCを使用しています。iOS6 Beta1. 修正するのを手伝ってください。
更新: 5.1 では動作しますが、6.0 ではクラッシュします。すべての例外ブレークポイントを発生させましたが、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 シミュレーターで動作します。iPad2 iOS 6.0 Beta2 では EXEC_BAD_ACCESS でクラッシュします。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! ...
何が間違っている可能性がありますか?