1

私は GLKView で GLKViewController を使用しています。ios5 では正常に動作し、io6 の更新後に glReadPixels が動作を停止し、黒いピクセルのみが返されます。

preserveBackBuffer について何か読みましたが、まだ成功していません

私のGLKViewのセットアップ:

_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

if (!_context) {
    DLog(@"Failed to create ES context");
}

GLKView *view = (GLKView *)self.view;
view.context = _context;

解決への道のりは?(私はここでそれを試みますが、まだ動作しません)

CAEAGLLayer * eaglLayer = (CAEAGLLayer*) view.layer;
eaglLayer.drawableProperties = @{kEAGLDrawablePropertyRetainedBacking : @(YES)};

シェーダー処理後にカメラを記録するために glReadPixels を使用しています

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
   fromConnection:(AVCaptureConnection *)connection

すべてのヘルプが受け入れられます, ありがとう,

4

1 に答える 1

0

ドキュメントによると、glReadPixels ではなくピクセルを読み取る必要がある場合は、GLKView の「スナップショット」メソッドを使用する必要があります。「スナップショット」に関するドキュメントから:

説明: このメソッドが呼び出されると、ビューは描画環境をセットアップし、描画メソッドを呼び出します。ただし、ビューのコンテンツを画面に表示する代わりに、画像としてアプリケーションに返されます。このメソッドは、アプリケーションがビューのコンテンツを明示的に必要とするたびに呼び出す必要があります。OpenGL ES 関数を使用して、基礎となるフレームバッファの内容を直接読み取ろうとしないでください。

于 2012-09-25T19:29:17.403 に答える