Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Визуальный процесс загрузки [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]

Ну так грузи и отображай! А если Нужен прогресс бар - то просто рнисуй его - как для простого приложения с ним работай


Наверх

Титульная страница Поиск, карта сайта Написать письмо