要するに、OpenGL ES 2.0で最も効率的な方法でFBOや別のテクスチャにコピーする必要があるOpenGLテクスチャがあります。OpenGL ES 2.0 - テクスチャをフレームバッファに効率的にコピーする方法
現時点では、最初のテクスチャを単にFBOに描画しています。
もっと効率的な方法がありますか?例えば。ピクセルデータをRAMに戻してから別のテクスチャにバッファリングすることを含まない何らかの種類のピクセルコピー - ES 2.0プロファイル内。
あなたにコンテキストを与える - このビデオは、関連するレンダリングされます。
私はLibVLCからビデオフレームデータをバッファリングされているOpenGLのテクスチャを持っていますが、原因私のアプリ間のタイミングの問題にレートとデコーダのリフレッシュレートを再描画、そのOpenGLのテクスチャに更新するフレームがない場合は、&を更新するフレームなしで画面にテクスチャを描画すると、非常に奇妙なことになる可能性があります。以前のフレームのデータを含む代わりに、それ自体の奇妙なイメージが描画されますスペースインベーダーのように)?? - なぜ私は前のフレームのコンテンツをキャッシュする必要があるのですか?
具体的には、AndroidのSurfaceTextureを作成するために使用されるOpenGLテクスチャです。このテクスチャのコンテンツを更新するためにupdateTexImageとreleaseTexImageを手動で呼び出す必要があります。次に、それを描いた。私がそれを解放しなければ、新しいフレームをそれに更新することはできません。私がそれをリリースすれば、同じフレームを複数回再描画することはできません。それはデコーダが自由に書き込むことができるように更新されたらテクスチャをキャッシングするように私に導かれました&私は再び描画するときに私はまだ前のフレームを持っています&まだ更新されていません。
ありがとうございました。
私は最後に、onFrameAvailableコールバックがリリースしてから更新し、それを可能にするためにGLContentを与えることによって、Android SurfaceTextureのupdateTexImageメソッドとreleaseTexImageメソッドをアプリケーション内で処理する方法を解明して問題を修正しました。もうキャッシュする必要はありませんが(私は!)、私はまだどんな答えにも興味があります。 –
と同じであれば、ソリューションとして回答を投稿する必要があります。 –
'glCopyTexImage2D'はどうですか? – elect