我面临一个奇怪的问题,不知道为什么会这样。
我有一个基于Java
的{{1}},其Activity
。此LinearLayout
由两个LinearLayout
组成。 GLSurfaceView
GLSurfaceView
,OnDraw
等SurfaceChanged
的所有关联方法都会将调用移至JNI
层。我在JNI
图层内使用OpenGLES
绘制了一个多维数据集。我还创建了一个触摸侦听器,并将其与第一个GLSurfaceView
相关联。触摸事件后,我将调用移至JNI
图层并随机旋转第一个立方体。
问题是当我旋转我的第一个立方体时,立方体都以完全相同的角度旋转。我已经调试了这个问题过去四个小时,我很确定我的逻辑没有任何问题。但由于某些未知原因,当我在一个GLSurfaceView中进行更改时,其他多维数据集会自动更改。
有什么想法吗?类似的问题?猜?
更新
我正在使用相同的上下文,即我GLSurfaceView
的活动。基本上我在C ++中有一个类,它通过opengles绘制多维数据集。现在我成功创建了两个立方体并同时显示它们。两个立方体都有不同的纹理,我通过Java层传递。我的c ++类有一个随机旋转立方体的方法。问题是,如果我调用一个立方体的方法来旋转它,其他自动旋转的角度相同,不会使我做的事情。
答案 0 :(得分:0)
没有你的代码,我猜你是在使用相同的上下文初始化你的GLSurfaceView。共享上下文时,将更改另一个,因为它们将在呈现器中共享相同的GL10实例。我没有在android中编程,但通常你会使用多个“视口”来显示不同的东西。
答案 1 :(得分:0)
假设你的第一个GLSurfaceView位于屏幕的第一个左侧,第二个位于第二个右半边。一个想法是检查motionEvent的坐标x,y的哪一侧属于。然后相应地传递旋转和翻译。
答案 2 :(得分:0)
问题解决了我的代码中存在一个逻辑错误
很抱歉给您带来不便