-
Суть в том, что в процессе загрузки нужно обновлять экран и как то отображать, что игра не зависла. Проблема реально в том, что в процессе загрузки прога буквально висит, и соответственно экран не обновляеться. Была идея сделать мультимедийный тайм и по событию у него перерисовывать экран и рисовать часики, но пока не получаеться реализовать, отказываеться нормально рисовать, вернее не отказываеться... вообще ничего не рисует.
-
Параллельный потокЪ ?
-
> [1] Dib@zol © (30.08.07 16:17)
Да. Вот дуаю, как научиьт паралельный потом, работать с ГЛ зарегестрированном в основном потоке.
-
А как данные грузятся? Если один целый ReadFile, то вариантов два: считывать кусками и вызывать "коллбэк" для рисования после каждого куска; использовать асинхронное чтение.
Вообщем идея в том, чтобы насовать вызов этих "коллбэков" в местах, где идет долгий цикл. Чуток может затормозить сам процесс загрузки, но думаю не сильно. Зато всегда точно будет отображаться процесс.
-
> [3] DeadMeat © (30.08.07 18:11)
Думал над этим варинатом. Проблема в том, что данные динамические. Получаеться загрузка в виде дерева. ГРузиться элемент. Он за собой тащит еще элементы, некоторые из загруженных тащат за собой еще элементы и т.д. Чтобы сделать нормальное отображение, нужно либо много вызовов натыкать, и тогда бдует потеря скорости примерно 50%, либо будет дергаться загрузка.
-
А что если ввести специальную переменную-счётчик? Т.е. в подгрузку каждого узла дерева добавить Inc(Counter), а независимый таймер будет этот каунтер смотреть, и если он больше предыдущего значения на некоторую определённую величину, то рисовать...
-
> [5] Dib@zol © (30.08.07 20:07)
Игра не стоит свечь. уже давно сделал примерно как описано в [3].
-
> [4] @!!ex © (30.08.07 18:29)
Если я правильно понимаю, то все они так или иначе сводятся к загрузке данных с диска? Т.е. опять же ReadFile.. Так? Тогда что мешает сделать обертку над ней? Когда надо загрузить, будет вызываться все время ваша обертка с нужными параметрами, а она, в свою очередь, уже рисовать процесс или считать процент... Тут уже воображение.
-
Хотя многое зависит от того, КАК вы отображаете процесс. Если там пофиг на дергания, то можно и доп. поток. В нем активировать контекст и делать все, что надо. Либо наоборот. В доп. потоке грузить, а в основном рисовать. Просто по опыту знаю, что с потоками рисование не самое плавное.
-
[1] + wglShareLists
-
Хм думаю не надо извращатся во многих игровых хитах загрузка идёт именно рывками по 10 -20 пикселей и ничего зазорного не будет если загрузка будет дёргатся...
|