0

こんにちは、背景を持つ親ビューグループがあり、そのビューグループの一部としてopenglviewが含まれています。

私が正確に求めているのは、背景が透明なopenglviewが必要であり、親の背景を表示できるようにしたい、openglviewの上にテキストを書き込めるようにし たい、テクスチャを使用したくないということです。

私はこのオプションを試しました、

  1. openglviewzorderontopをtrueに設定します。それは私のテキストをglviewの後ろに置くようにします。zorderontopを真にしない場合、背景は黒になります。

  2. 半透明のテーマを、私のglviewと親ビューグループを透明にするアクティビティに設定します。

  3. glviewを含むレイアウトを膨らませ、ContexThemeWrapperクラスを使用してglviewのテーマを動的に変更しようとしました。ただし、setTheme()は実行時に機能しません。マニフェストファイルにテーマを適用するだけで機能します。

  4. レイアウトの背景を透明に適用しても機能しませんでしたが、背景はまだ黒です。

4

1 に答える 1

3

問題は、ViewRoot によって作成された 1 つのサーフェスと、GLSurfaceView 用に作成された 1 つのサーフェスの 2 つの別個のサーフェスに描画していることです。これらのサーフェスは、SurfaceFlinger によって重ね合わされて合成されます。(デフォルトでは、ViewRoot サーフェスが上になり、GLSurfaceView サーフェスが下になります。)

すべてのビューは ViewRoot のサーフェスに描画されるため、それらはすべて OpenGL サーフェスの上または OpenGL サーフェスの下にある必要があります。

テクスチャを使用したくない場合は、今度は GLSurfaceView ではなく SurfaceView を使用して 3 番目のサーフェスを作成し、GLSurfaceView の上にテキストを描画するしかありません。

于 2011-09-12T14:29:51.727 に答える