多个GLSurfaceView同时移动

时间:2011-08-18 11:01:36

标签: java android opengl-es java-native-interface

我面临一个奇怪的问题,不知道为什么会这样。

我有一个基于Java的{​​{1}},其Activity。此LinearLayout由两个LinearLayout组成。 GLSurfaceView GLSurfaceViewOnDrawSurfaceChanged的所有关联方法都会将调用移至JNI层。我在JNI图层内使用OpenGLES绘制了一个多维数据集。我还创建了一个触摸侦听器,并将其与第一个GLSurfaceView相关联。触摸事件后,我将调用移至JNI图层并随机旋转第一个立方体。

问题是当我旋转我的第一个立方体时,立方体都以完全相同的角度旋转。我已经调试了这个问题过去四个小时,我很确定我的逻辑没有任何问题。但由于某些未知原因,当我在一个GLSurfaceView中进行更改时,其他多维数据集会自动更改。

有什么想法吗?类似的问题?猜?

更新

我正在使用相同的上下文,即我GLSurfaceView的活动。基本上我在C ++中有一个类,它通过opengles绘制多维数据集。现在我成功创建了两个立方体并同时显示它们。两个立方体都有不同的纹理,我通过Java层传递。我的c ++类有一个随机旋转立方体的方法。问题是,如果我调用一个立方体的方法来旋转它,其他自动旋转的角度相同,不会使我做的事情。

3 个答案:

答案 0 :(得分:0)

没有你的代码,我猜你是在使用相同的上下文初始化你的GLSurfaceView。共享上下文时,将更改另一个,因为它们将在呈现器中共享相同的GL10实例。我没有在android中编程,但通常你会使用多个“视口”来显示不同的东西。

答案 1 :(得分:0)

假设你的第一个GLSurfaceView位于屏幕的第一个左侧,第二个位于第二个右半边。一个想法是检查motionEvent的坐标x,y的哪一侧属于。然后相应地传递旋转和翻译。

答案 2 :(得分:0)

问题解决了我的代码中存在一个逻辑错误

很抱歉给您带来不便