ビデオのフレームを取得し、関数 CVPixelBufferCreateWithPlanarBytes() を使用してビデオ フレームから抽出された 2 つの平面配列から PixelBuffer を作成しています。CVPixelBufferRef pixelBuffer =CMSampleBufferGetImageBuffer(sampleBuffer) から生成されたピクセルバッファと作成されたピクセルバッファが同じであることを確認しましたが、作成しているときにCVOpenGLESTextureCacheCreateTextureFromImage() を使用したテクスチャ エラー -6683 を返します。ここで何が問題なのかを教えてください。事前に感謝します
質問する
1442 次
2 に答える
2
ドキュメントによると、このエラーの理由は次のとおりです。
「サポートされていないバッファ サイズ、ピクセル形式、または属性のため、ピクセル バッファは OpenGL と互換性がありません。」
つまり、次の 2 つのうちの 1 つを意味します。
1: テクスチャ バッファを設定するときに、OpenGLES でサポートされていないピクセル形式を使用しています。
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, data);
2 : 私の記憶が正しければ、ビデオ フレームの画像形式が OpenGLES の実装と互換性がないためです。デバイスカメラからの場合、YCbCrと信じており、RGB / RGBAの画像に変換する必要があります。
さまざまな画像フォーマットに対しても、ピクセルあたりのビット数が異なることに注意してください。iOSでサポートされているものを確認してください。ほとんどがKhronos仕様のものだと思います。主に品質のためにRGBA_8888を使用しています)。上記の例は、PVRTC を使用しない場合に使用する傾向がある任意の PNG で機能しますが、
これは、フレームを取得し、CGImage を使用して、iOS でテクスチャとして使用できる OpenGLES 対応の形式に変換する方法を示しています。
于 2013-04-24T07:54:27.133 に答える