Несколько GLSurfaceView движутся одновременно - PullRequest
1 голос
/ 18 августа 2011

Я столкнулся со странной проблемой, не уверенной, почему это происходит.

У меня есть Java на основе Activity, который имеет LinearLayout.Это LinearLayout состоит из двух GLSurfaceView.Все связанные методы GLSurfaceView, такие как OnDraw, SurfaceChanged и т. Д., Перемещают вызов до уровня JNI.Внутри слоя JNI я рисую куб, используя OpenGLES.Я также создал сенсорный слушатель и связал его с первым GLSurfaceView.Как только я получаю событие касания, я перемещаю вызов в слой JNI и случайным образом поворачиваю первый куб.

Проблема в том, что когда я поворачиваю свой первый куб, оба куба вращаются под точно таким же углом.Я отлаживал эту проблему в течение последних четырех часов, и я почти уверен, что в моей логике нет ничего плохого.Но по неизвестной причине, когда я делаю изменения в одном GLSurfaceView, другой куб автоматически изменяется.

Есть идеи?Похожие проблемы?Угадайте?

Обновление

Я использую один и тот же контекст, т.е. моя активность для обоих GLSurfaceView.В основном у меня есть класс внутри C ++, который рисует куб через opengles.Теперь я успешно создаю два куба и показываю их одновременно.Оба куба имеют разную текстуру, которую я передаю через слой Java.Мой класс C ++ имеет метод, который случайным образом вращает куб.Проблема в том, что если я вызываю метод одного куба, чтобы повернуть его, другой автоматически поворачивается под тем же углом, не делая то, что я делаю.

Ответы [ 3 ]

0 голосов
/ 18 августа 2011

Скажите, что ваш первый GLSurfaceView находится в первой левой части экрана, а второй - во второй правой половине. Одна идея состоит в том, чтобы проверить, к какой стороне принадлежат координаты x, y объекта motionEvent. А затем передайте вращение и перевод соответственно.

0 голосов
/ 19 августа 2011

Проблема решена, в моем коде была одна логическая ошибка

Приносим извинения за неудобства

0 голосов
/ 18 августа 2011

Без вашего кода, я полагаю, вы инициализируете свой GLSurfaceView, используя тот же контекст.При изменении общего контекста один изменит другой, потому что они будут использовать один и тот же экземпляр GL10 в Renderer.Я не программирую на Android, но в целом вы бы использовали несколько «окон просмотра» для отображения разных вещей.

...