![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Визуальный процесс загрузки [Delphi, Windows]
Orc © (2003-09-10 08:50:00)Привет Мастерам!
Ситуация такая: я гружу много текстур (примерно на 10М), выглядет это так - режим экрана меняется, проходит секунд 5 (именно когда грузятся файлы в виде текстур), и начинается собственно действие. Вопрос в том, чтобы загрузить сперва картинку типа "Гружу", показать её, догрузить все остальные текстуры и начать действо. Действо у меня происходит под Direct3D. Помогите пожалста!
cyborg (2003-09-10 13:56:00) [1]NailMan © (10.09.03 13:50)
Пусть содержат, пользователю то какое дело, ему главное видеть, что игра не зависла.
NailMan (2003-09-10 13:50:00) [2]cyborg ©
А модельки могут содержат разное количество текстур и прочего барахла, и как оценить вклад в инкремент к прогресс бару?
К тому же не только модельки учавствуют в процессе загрузки, а как я уже говорил и динамически создаваемая сцена. Вобщем дело мутное.
Orc
Я делаю так:
В начале программы я создаю ID3DXSprite. Делаю рект с размерами экрана (скажем 800x600).
Когда надо загружать, то рендерю заранее определенную картинку через ID3DXSprite, делаю present и гружу чё мне надо.
Сейчас буду делать через свой GUI - создам панель с лейблом "ЗАГРУЗКА", и на панельки будет прогресс бар, под которым будет выводиться лог текущего действа(возможно кусок моей консоли). Самое важное определить инкремент для каждого действа.
cyborg (2003-09-10 13:47:00) [3]Пропустить "если приложение с формой, делай Application.ProcessMessages;" в тексте
Orc (2003-09-10 13:40:00) [4]2Cyborg: в том то и дело, что приложение без формы - было бы с формой, я бы не задавал дурацкие вопросы :)) Что делать то в "бесформенном" случае? :)
cyborg (2003-09-10 13:34:00) [5]Некузяво это как?
Во многих играх такой прогресс бар.
Вот сколько имён файлов моделек, на столько и разбивай.
NailMan (2003-09-10 13:31:00) [6]cyborg ©
Не обязательно увеличивать прогресс после каждой текстуры, дастаточно поделить прогресс бар на логические части, загрузка интерфейса, создание объектов, загрузка текстур и т.д. и обновлять прогресс по завершению обработки очередного участка.
Ну это будет некузяво :-) Ведь на всегда будет одна и та же картина наращивания процента у прогресс бара.
Твоей программе всё известно и чего и сколько грузить, только реализовать тебе это нужно.
В том-то и дело что заранее не известно, так как карта генерируемая и количество объектов и количество остального заранее не известно. Хотя сами модельки загружаются до загрузки(генерации) сцены, но грузятся они из листа, в котором только имя файла модельки, а далее модельку грузит уже в динамике.
Так что чтобы узнасть сколько там у моделек всего напихано, надо их сканировать перед загрузкой, а это лишнее время.
cyborg (2003-09-10 12:37:00) [7]NailMan © (10.09.03 11:54)
Твоей программе всё известно и чего и сколько грузить, только реализовать тебе это нужно.
Не обязательно увеличивать прогресс после каждой текстуры, дастаточно поделить прогресс бар на логические части, загрузка интерфейса, создание объектов, загрузка текстур и т.д. и обновлять прогресс по завершению обработки очередного участка.
NailMan (2003-09-10 11:54:00) [8]cyborg ©
Ха! Интересно я тоже хотел сделать прогрессбар при загрузке сцены, но! интересно как мне вычислить прибавление процента на прогрессбаре если заранее неизвестно сколько грузится текстур, сколько объектов и всего остального? :-)
Есть какие-то соображения?
ЗЫ: с контексным выводом прогресс бара проблем нет(класс тако я сделал).
cyborg (2003-09-10 10:02:00) [9]Меняй структуру программы. Между загрузками текстур, если приложение с формой, делай Application.ProcessMessages; Перед загрузкой текстур грузи картинку загрузки и покажи её, потом уже начинай грузить текстуры, после загрузки каждой текстуры обновляй прогрессбар.
Orc (2003-09-10 09:17:00) [10]В том-то и дело, что не получается - я РАЗДЕЛЬНО гружу картинку загрузки (как спрайт, Direct3DSprite) и картинки-текстуры, между загрузками начинаю рендеринг, пытаюсь показать загрузочный экран - не получается. Догружаются ВСЕ текстуры - и только после этого начинается основной рендеринг.
HolACost! (2003-09-10 08:54:00) [11]Ну так грузи и отображай! А если Нужен прогресс бар - то просто рнисуй его - как для простого приложения с ним работай