この回答と同様の設定で、管理できる OpenGL テクスチャを使用してSurfaceTextureを作成したいと考えています。(ここで引用:)
- OpenGL でテクスチャを作成する
- このテクスチャを新しい SurfaceTexture のコンストラクタに渡します。
- この新しい SurfaceTexture をカメラに与えます。
- OES_External を使用していることを確認してください (詳細については、ドキュメントを参照してください)。
ただし、OpenGL テクスチャを作成するには (回答のステップ 1 のように)、EGL contextが必要です。これには、EGLSurface を最新にする必要があり、SurfaceTexture が必要です。EGL コンテキストを作成する唯一の方法は、SurfaceView (または SurfaceTexture を持つ別のビュー) を作成し、それを使用して EGLSurface を初期化し、EGLContext を現在の状態にすることです。
私の目的は、EGLContext を作成し、それをバックグラウンド スレッドで最新の状態にして、カメラのプレビュー画像で画面外の計算を行うことです (主に NDK を使用)。ライブラリを作成し、できるだけ UI から独立させたいと考えています。関連する 2 つの質問:
Java 側で、事前に SurfaceTexture を作成せずに EGLContext を作成することは可能ですか?
NDK 側では、以前はネイティブの windows を作成するためのプライベート API 呼び出しがありましたandroid_createDisplaySurface()
が、もう機能しません。それはプライベート API です。NDK でサーフェスを作成する方法はありますか?
私は EGL を使用するのが初めてで、EGLContext を最新にするために EGLSurface が必要な理由を理解できません。iOS では、EAGLContext を最初に作成し、次に必要に応じてフレームバッファを作成できます。EGL を使用すると、常にネイティブ ウィンドウが必要なようです。