2011-08-18 131 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属于哪一侧。然后相应地传递旋转和平移。