Java 多个GLSURFACHEVIEW同时移动

Java 多个GLSURFACHEVIEW同时移动,java,android,opengl-es,java-native-interface,Java,Android,Opengl Es,Java Native Interface,我面临一个奇怪的问题,不知道为什么会发生这种情况 我有一个基于Java的活动,它有一个线性布局。该线性布局由两个GLSURFACHEVIEW组成。GLSURFACHEVIEW的所有相关方法,如OnDraw、SurfaceChanged等,都将调用向下移动到JNI层。在JNI层中,我正在使用OpenGLES绘制一个立方体。我还创建了一个touch listener,并将其与第一个GLSurfaceView相关联。一旦我得到一个触摸事件,我将调用移动到JNI层并随机旋转第一个立方体 问题是当我旋转第

我面临一个奇怪的问题,不知道为什么会发生这种情况

我有一个基于Java的活动,它有一个线性布局。该线性布局由两个GLSURFACHEVIEW组成。GLSURFACHEVIEW的所有相关方法,如OnDraw、SurfaceChanged等,都将调用向下移动到JNI层。在JNI层中,我正在使用OpenGLES绘制一个立方体。我还创建了一个touch listener,并将其与第一个GLSurfaceView相关联。一旦我得到一个触摸事件,我将调用移动到JNI层并随机旋转第一个立方体

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

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

更新


我使用相同的上下文,即我的活动用于两个GLSURFACHEVIEW。基本上我有一个C++内部的类,它通过OpenGLE绘制立方体。现在我成功地创建了两个立方体并同时显示它们。这两个立方体都有不同的纹理,我通过Java层传递它们。我的C++类有一个随机旋转立方体的方法。问题是,如果我调用一个立方体的方法来旋转它,另一个立方体会自动以相同的角度旋转,我不知道该怎么做。

如果没有您的代码,我猜您是在使用相同的上下文初始化GLSurfaceView。当共享一个上下文时,更改一个将更改另一个,因为它们将在渲染器中共享相同的GL10实例。我不使用android编程,但一般来说,您会使用多个视口来显示不同的内容。

假设您的第一个GLSURFACHEVIEW位于屏幕的第一个左侧,第二个位于屏幕的第二个右侧。一种方法是检查motionEvent的坐标x,y属于哪一侧。然后相应地传递旋转和平移。

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


很抱歉给您带来不便

是的,我使用相同的上下文初始化GLSURFACHEVIEW,但两个立方体上的纹理不同。这就是问题所在吗?