OpenGL (ES) - полигоны временно исчезают, когда новые объекты добавляются в ArrayList - PullRequest
0 голосов
/ 01 мая 2011

В приложении OpenGL ES 1.x для Android я генерирую круг (из треугольников), а затем перевожу его около ста раз, чтобы сформировать уровень.Все работает, кроме случаев, когда происходит определенное событие, которое приводит к немедленному добавлению около 15 объектов в массив, в котором хранятся координаты окружностей.Когда это событие происходит 2+ раза быстро, все круги в списке исчезают примерно на 1/5 секунды.Кроме того, круги анимируются плавно.

Программа хорошо работает как приложение Java Java, используя те же методы синхронизации, и я попробовал с полдюжины или около того других методов синхронизации безрезультатно, поэтому я чувствую, чтоПроблема заключается в реализации OpenGL.Есть предложения?

Ответы [ 2 ]

3 голосов
/ 01 мая 2011

Вам действительно нужно хранить данные вершин в памяти клиента?Если вы не измените его, я предлагаю вам использовать VBO вместо этого.Просто загрузите его в графическую память один раз, а затем нарисуйте оттуда.Это будет намного быстрее (не требуя от вас посылать все данные вершин для каждого рисования), и я уверен, что вы не столкнетесь с проблемой, которую вы описали.Если хотите, тогда вам нужно только дать команду на прорисовку для каждого экземпляра вашего круга.

1 голос
/ 01 мая 2011

Значит, список меняется под вашим носом? Похоже, вам нужно внести какие-либо изменения в этот список в теме OpenGL. Попробуйте Activity.postOnUiThread(Runnable), где Runnable реализует ваш собственный код. Возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...