Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2011.02.20;
Скачать: [xml.tar.bz2];

Вниз

Загрузочный экран.   Найти похожие ветки 

 
@!!ex ©   (2007-08-30 15:33) [0]

Суть в том, что в процессе загрузки нужно обновлять экран и как то отображать, что игра не зависла.
Проблема реально в том, что в процессе загрузки прога буквально висит, и соответственно экран не обновляеться.
Была идея сделать мультимедийный тайм и по событию у него перерисовывать экран и рисовать часики, но пока не получаеться реализовать, отказываеться нормально рисовать, вернее не отказываеться... вообще ничего не рисует.


 
Dib@zol ©   (2007-08-30 16:17) [1]

Параллельный потокЪ ?


 
@!!ex ©   (2007-08-30 18:10) [2]

> [1] Dib@zol ©   (30.08.07 16:17)

Да. Вот дуаю, как научиьт паралельный потом, работать с ГЛ зарегестрированном в основном потоке.


 
DeadMeat ©   (2007-08-30 18:11) [3]

А как данные грузятся?
Если один целый ReadFile, то вариантов два:
считывать кусками и вызывать "коллбэк" для рисования после каждого куска;
использовать асинхронное чтение.

Вообщем идея в том, чтобы насовать вызов этих "коллбэков" в местах, где идет долгий цикл. Чуток может затормозить сам процесс загрузки, но думаю не сильно. Зато всегда точно будет отображаться процесс.


 
@!!ex ©   (2007-08-30 18:29) [4]

> [3] DeadMeat ©   (30.08.07 18:11)

Думал над этим варинатом.
Проблема в том, что данные динамические.
Получаеться загрузка в виде дерева. ГРузиться элемент. Он за собой тащит еще элементы, некоторые из загруженных тащат за собой еще элементы и т.д.
Чтобы сделать нормальное отображение, нужно либо много вызовов натыкать, и тогда бдует потеря скорости примерно 50%, либо будет дергаться загрузка.


 
Dib@zol ©   (2007-08-30 20:07) [5]

А что если ввести специальную переменную-счётчик? Т.е. в подгрузку каждого узла дерева добавить Inc(Counter), а независимый таймер будет этот каунтер смотреть, и если он больше предыдущего значения на некоторую определённую величину, то рисовать...


 
@!!ex ©   (2007-08-30 20:48) [6]

> [5] Dib@zol ©   (30.08.07 20:07)

Игра не стоит свечь. уже давно сделал примерно как описано в [3].


 
DeadMeat ©   (2007-08-30 21:48) [7]

> [4] @!!ex ©   (30.08.07 18:29)

Если я правильно понимаю, то все они так или иначе сводятся к загрузке данных с диска? Т.е. опять же ReadFile.. Так?
Тогда что мешает сделать обертку над ней? Когда надо загрузить, будет вызываться все время ваша обертка с нужными параметрами, а она, в свою очередь, уже рисовать процесс или считать процент... Тут уже воображение.


 
DeadMeat ©   (2007-08-30 21:50) [8]

Хотя многое зависит от того, КАК вы отображаете процесс. Если там пофиг на дергания, то можно и доп. поток. В нем активировать контекст и делать все, что надо. Либо наоборот. В доп. потоке грузить, а в основном рисовать.
Просто по опыту знаю, что с потоками рисование не самое плавное.


 
XProger ©   (2007-08-30 23:16) [9]

[1] + wglShareLists


 
Jkot ©   (2007-08-31 15:09) [10]

Хм думаю не надо извращатся во многих игровых хитах загрузка идёт именно рывками по 10 -20 пикселей и ничего зазорного не будет если загрузка будет дёргатся...



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2011.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
2-1290689216
FIL-23
2010-11-25 15:46
2011.02.20
Передача edita в собственную процеду.


15-1282048392
Mark
2010-08-17 16:33
2011.02.20
Телевизор без рамки


10-1171642676
first
2007-02-16 19:17
2011.02.20
форма внутри com компонента


2-1290837278
azim
2010-11-27 08:54
2011.02.20
Траснслятор мат выражений


15-1285092027
George
2010-09-21 22:00
2011.02.20
InnoSetup, Firebird Server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский