2011-08-18 12 views
1

なぜこれが起こっているのか不明な奇妙な問題に直面しています。複数のGLSurfaceViewが同時に動いています

私は、を有するJavaに基づいてActivityを持っています。このLinearLayoutは、2つのGLSurfaceViewで構成されています。 GLSurfaceViewの関連するすべてのメソッドは、OnDraw,SurfaceChangedなどはJNIレイヤーに移動しています。 JNIレイヤー内では、OpenGLESを使用して立方体を描画しています。また、タッチリスナーを作成し、最初にGLSurfaceViewと関連付けました。タッチイベントが発生すると、私はJNIレイヤーにコールを移動し、最初のキューブをランダムに回転させます。

問題は、最初の立方体を回転させるときに、両方の立方体がまったく同じ角度で回転することです。私はこの問題を最後の4時間デバッグしました。私はロジックに間違いがないと確信しています。しかし、私が1つのGLSurfaceViewを変更するときの何らかの未知の理由により、他のキューブが自動的に変更されます。

アイデア?同様の問題?推測?

更新

私はつまり、両方GLSurfaceViewための私の活動と同じコンテキストを使用しています。基本的に私はopenglesを通してキューブを描画するC++のクラスを持っています。今は2つのキューブを作成して同時に表示しています。両方のキューブには、Javaレイヤーを介して渡す異なるテクスチャがあります。私のC++クラスには、キューブをランダムに回転させるメソッドがあります。問題は、あるキューブのメソッドを呼び出すとそれを回転させ、他のキューブは同じ角度で自動的に回転するということです。

答えて

0

問題は、はい、私はGLSurfaceViewを初期化するために、同じコンテキストを使用していますが、両方のキューブはその上に異なるテクスチャを持って不便

0

あなたのコードがなければ、同じコンテキストを使ってGLSurfaceViewを初期化していると思います。コンテキストを共有すると、レンダラ内で同じGL10インスタンスを共有するため、コンテキストを共有すると、他のものが変更されます。私はアンドロイドではプログラムしませんが、一般には複数の「ビューポート」を使ってさまざまなことを表示します。

+0

ため

申し訳ありませんが、私のコード内の1つの論理的な間違いがあった解決しました。これは問題ですか? –

0

最初のGLSurfaceViewが画面の最初の左側にあり、2番目のGLSurfaceViewが2番目の右半分にあるとします。 1つのアイデアは、motionEventの座標x、yがどの辺に属しているかを調べることです。それに応じて、回転と平行移動を渡します。

関連する問題