「新しいカメラフレームワーク」Camera2のカメラストリームをOpenGLテクスチャに取得しようとしていますが、画像は黒いままです。OpenGLテクスチャによるXamarin Android Camera2-Preview
私はXamarinで作業していますが(Javaは非常に似ているはずです)、ネイティブレンダリングにNDKを使用しています。そこで、OpenGL-ESコンテキストを作成したGLSurfaceViewを取得しました。 C++から。
次のサンプルはチェックアウトしていません。https://github.com/googlesamples/android-Camera2Basicとそこから私は行きたいです。
TextureViewのSurfaceTextureをターゲットとしてCaptureRequestBuilderに追加する代わりに、新しいSurfaceTextureを新しいテクスチャハンドルで作成しました。
// C++
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &m_TextureHandle);
glBindTexture(GL_TEXTURE_EXTERNAL_OES, m_TextureHandle);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_EXTERNAL_OES, 0);
// C# (or Java)
_SurfaceTexture = new SurfaceTexture(m_TextureHandle);
_SurfaceTexture.FrameAvailable += SurfaceTextureOnFrameAvailable;
着信フレームの最終行が登録されます。ここ 私はちょうど私のレンダリングスレッドへの派遣と呼ばれる:
_SurfaceTexture.UpdateTexImage();
が、私は重要な一歩足りませんか?私はまた、同じ結果を持つ非推奨のカメラAPIを使用しようとしました。
おかげ 甲斐
はい、私はTextureViewのSurfaceの代わりに追加しました。 –
私はGLSurfaceViewのイベントキューにPushするUpdateTexImage呼び出しをディスパッチするイベントも取得します...この呼び出しも完了しました.. –