2011-08-18 57 views
1

我面臨一個奇怪的問題不知道爲什麼會發生這種情況。多個GLSurfaceView在同一時間移動

我有一個Java基於Activity它有一個LinearLayout。這LinearLayout由兩個GLSurfaceView組成。所有與GLSurfaceView相關的方法如OnDrawSurfaceChanged等都將呼叫降至JNI層。在JNI層內,我使用OpenGLES繪製了一個立方體。我還創建了一個觸摸監聽器,並將其與第一個GLSurfaceView相關聯。一旦發生觸摸事件,我將呼叫移至JNI圖層並隨機旋轉第一個立方體。

問題是當我旋轉我的第一個立方體時,兩個立方體都以完全相同的角度旋轉。我在過去的四個小時裏調試了這個問題,我很確定我的邏輯沒有任何問題。但是由於某種未知的原因,當我在一個GLSurfaceView中進行更改時,其他多維數據集會自動更改。

任何想法?類似的問題?猜測?

更新

我使用同樣的背景下,即我的兩個GLSurfaceView活動。基本上我有一個C++內部的類,它通過opengles繪製立方體。現在我正在成功創建兩個立方體並同時顯示它們。這兩個立方體都有不同的紋理,我通過Java層傳遞。我的C++類有一個隨機旋轉多維數據集的方法。問題是如果我調用一個立方體的方法來旋轉它,那麼它會自動以相同的角度旋轉,而不會做我所做的事情。

回答

0

問題解決了。在我的代碼一個邏輯錯誤

抱歉不便

0

沒有你的代碼,我猜你正在使用相同的上下文初始化你的GLSurfaceView。當共享上下文更改時,會更改另一個上下文,因爲它們將在渲染器中共享相同的GL10實例。我不在android中編程,但一般情況下,您會使用多個「視口」來顯示不同的內容。

+0

是的,我使用相同的上下文來初始化GLSurfaceView但無論是立方體對此有不同的質感。這是問題嗎? –

0

說你的第一個GLSurfaceView在屏幕的第一個左邊,第二個在右邊的第二個。一個想法是檢查motionEvent的座標x,y屬於哪一側。然後相應地傳遞旋轉和平移。