2

HTC Evo 3D を使用しており、自動立体視で描画されたカメラのプレビュー画像の上に自動立体視モードで 3D オーバーレイ (OpenGL ES で描画された立方体) を取得しようとしていますが、うまくいきませんでした。できることは、カメラ ビュー (2D または 3D) を表示するか、OpenGL キューブを 3D モードで表示することですが、両方を組み合わせようとすると、デバイス全体がフリーズします (" W/SharedBufferStack(11043) : waitForCondition(LockCondition) がタイムアウトしました (identity=425, status=0). CPU が固定されている可能性があります. 再試行します. ") または、カメラ画像のみが表示され、オーバーレイは表示されません.

フリーズの問題については、すでに Web でいくつかの情報を読んでおり、カーネルにパッチを適用する以外に本当の解決策はないように思われるため、現時点では他の問題に焦点を当てています。私たちが持っているのはS3DGLSurfaceView拡張GLSurfaceViewする であり、呼び出すことで 3D サポートを有効にします

Surface surface = holder.getSurface();
formatResult = DisplaySetting.setStereoscopic3DFormat(surface,
                      DisplaySetting.STEREOSCOPIC_3D_FORMAT_SIDE_BY_SIDE);

そして、このビューでキューブを描画します (このビューをアクティビティに追加するだけで完全に機能します)。しかしその後、 をCameraPreviewカプセル化するオブジェクトもあり、これSurfaceviewを呼び出して立体カメラに渡します。

camera = Camera.open(CAMERA_STEREOSCOPIC);
camera.setPreviewDisplay(holder);

ホルダーは当方の中古品ですのでどこからpreview.getHolder()でも保管できます。アクティビティ自体には を使用し、最初にカメラ プレビューを追加し、その後 OpenGL サーフェスを追加します。逆の方法も試しましたが、何も変わりませんでした。z オーダーも試してみましたが、これも効果がありませんでした。previewSurfaceViewRelativeLayout

現在のところ、自動立体視モードが有効になっている 2 つのビュー (自動立体視モードを自動的に有効にするカメラ プレビューと、手動で有効にする OpenGL サーフェス) を持つことは単純に不可能であるというのが私たちの考えですが、これが間違っていることを願っています。何か他のものを逃します。

3D カメラ画像の上に 3D オーバーレイを表示する方法を誰かが教えてくれたら最高です。両方とも自動立体視モードです。

4

0 に答える 0