0

SurfaceTexture から attachToGLContext メソッドを呼び出したい場合、Surface を再作成する必要があるかどうかを調べようとしています。Androidのドキュメントを調べてみましたが、言及がありません。

私が知る限り、Surface は OpenGL コンテキストの外部テクスチャとして機能する SurfaceTexture のバッファであるため、そうではないと推測しています。そのため、SurfaceTexture を別のコンテキストにアタッチしても、これには影響しません。

誰かが確かに知っていますか?

4

1 に答える 1

3

SurfaceTexture の内部名は「GLConsumer」です。サーフェスには生産者と消費者の関係があり、SurfaceTexture は取得したものを何でも受け取り、GLES テクスチャとして利用できるようにする消費者です。

それにアタッチされた Surface は (通常、SurfaceTexture を引数として受け取る Surface コンストラクターを使用して) プロデューサー側です。プロデューサーとコンシューマーの間の通信にはバッファーのキューがありますが、Surface を「バッファー」と表現するのは正確ではありません。グラフィックス データを消費者に送信する通信エンドポイントに似ています。

コンシューマー側に関連付けられた EGL コンテキストを変更しても、プロデューサー側には影響しません。attach / detach 呼び出しはプロデューサを切断しません。これらは、SurfaceTexture が受信したデータのバッファーで何をするかにのみ影響します。

ただし、これらの呼び出しを使用する必要があることはかなりまれであり、EGL コンテキストの操作に関連するオーバーヘッドが発生する可能性があるため、必要なものであることを確認してください。

于 2015-08-22T23:12:23.033 に答える