Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > Android

Android Разработка игр на платформе Android

Ответ
 
Опции темы
Старый 29.04.2014, 02:59   #1
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Сообщение Android, OpenGL 2.0 и многопоточность

Есть сильное чувство, что я чего-то не понимаю.
Методы обновления и рисования GLSurfaceView, вызываются в своём потоке. В другом потоке я меняю игровой мир с дофига большим состоянием (ибо стратегия).
На данный момент мне в голову приходит такой способ:
в потоке логики изменять состояние мира
synchronized(world){
   
//do something, причём может быть долгой операцией

вызывать рисование
view.queueEvent(new Runnable() {
   public 
void run() {
     
view.requestRender();
   }});
return 
true
и реализация рисования:
public void onDrawFrame(GL10 gl10) {
...
   
synchronized(world){
       
//рисование
   


Обновление мира и вызовы рисования скорее всего будут идти вперемежку.
Мне кажется, что если я вызову рисование, а потом сразу начну менять мир какой-нибудь долгой операцией (порядка секунды), то метод onDrawFrame, может быть вызван чуть позже, чем я начну снова менять мир - получится, что рисования изменений не произошло (вернее, оно завершится, но в лучшем случае через секунду), а так нехорошо.
Проще говоря, мне нужно заблокироваться до того момента, как экран будет обновлён, и только после возобновить поток с игровой логикой.
Как это по-человечески без велосипедов сделать?
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW

Последний раз редактировалось Igor, 29.04.2014 в 04:37.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com