• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

Полоса загрузки

Автор anval, 01 марта 2009, 10:51:27

« назад - далее »

anval

Кто нибудь решил вопрос ,что бы происходило действие,а не текстурка висела во время загрузки основного проекта?На оффоруме нашел примерчик с предварительной загрузкой текстур,но мне не подходит.

Viik

Елси использовать Loader то там есть механизм прогресс бара, есть список цгр которые нужно загрузить, каждый раз кога загружаеться очередная сгрка специальная переменная увеличивается на +1, с помощью нее анимируеш прогресс бар.

anval

А без LOADERa? У меня данные об объектах и именах их текстур хранятся в xml.И подгрузка текстур идет одновременно созданием объектов в фэктори.И как это все разделить не представляю.В идеале было бы загружать проект через какой то стартовый файлик,но получается зависание с картинкой до окончания закрузки.Я уже не говорю про полноценную полосу загрузки,а хотяб про какое-то движение во время,показывающее что "не висит".

Viik

Loader на LUA написан, посмотри как они делали, поидее ты можеш отследить когда очередной файл загружен, независимо от того юзаеш ХМЛ или нет.

Const_47

&anval

Создай Лоадер клас, у которого есть метод, параметру.txt которого передаем имя твоего xml файла.

1. подгружаем xml
2. читаем xml
3. подгружаем то, что прочитали с хмл.

Тогда фактически ты можеш создавать в xml "шаблоны" подгрузок-выгрузок:)))

"
А без LOADERa? У меня данные об объектах и именах их текстур хранятся в xml.И подгрузка текстур идет одновременно созданием объектов в фэктори.И как это все разделить не представляю.
"

Могло случится так, что твои инстансы в большей иерархической зависимости друг от друга. Значит проэкт
невозможно доработать или росширить без конкретной переделки того, что уже есть. Такому факту есть конкретные
причины... и лекарства... Я не предираюсь, это из личного опыта. Удачи и терпения.

 

   

anval

собственно почти так у меня и есть.Отдельный класс Setup(xml pars),отдельно Loader-загружает из папок текстуры и тексты.Все это объединяется в процессе создания объектов.
Т.е.ты предлагаешь загрузку прерывистой т.е.XML поделить на несколько частей и в паузах между "переключениями"стартовый цгр будет размораживаться и в нем будет что-либо происходить?

Const_47

Я передлагаю создать лоад-менеджер с помощью которого ты бы мог управлять загрузкой - выгрузкой - рисовать полосу при инициализациий(может созданием инстансов фабрикой). Почему
из стартового цгр? Ты должен управлять ресурсами из любой, ну почти любой части проекта.

Сама полоса загрузки пусть будет протектет методом-инстансом? такого менеджера. Управление такой тебя вообще не должно волновать в проекте. Это задача менеджера.

1 -> load xml
2 -> read xml(models,техтure,возможно данные для фабрики???)
3 -> load models -> рисуем полосу , имя сgr , процент.
4 -> load textures -> рисуем полосу , имя сgr , процент.
5 -> инициализируем инстансы фабрикой -> рисуем полосу , пишем инициализация, процент.

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

Особенно меня волнует 5 пункт. Я же говорю, зависимо от того какая у тебя иерархия - зависимость  частей проекта.   

anval

Частично решил проблемку.Вставил дополнительные строчки в xml и теперь при перезагруке мигает текст.Но при первой загрузке проекта,наверное без стартового цгр не обойтись?

Const_47

Ну я понятия не имею как у тебя выглядит иэрархия, и конкретно с какими проблемами ты сталкиваешься.   
То что сам инстанс менеджера нужно инициализировать при старте это понятно. Например я себе делаю инстанс менеджера из чего только можно. Например GUI менеджер. Менеджер ресурсов. Менеджер звука - инициализирую их при старте. Потом методами управляю из любой части проэкта. Причем для "cвязывания" своей иерархии использую классы-посредники ;). Это позволяет довольно просто розширыть-доработать проэкт, без внесения особенно больших коректив в сами инстансы или иэрархию.





 

anval

За основу я взял астероид -фабрика,менелжер и все объединяется в engine.То же для GUI.Добавлен Loader текстур и Sax parser.Т.е.у меня нет динамической подгрузки,просто при инициализации все грузится сразу и в конце кнопкой перезагружается.Ну и PositionTree.

И ,кстати,на счет PositionionTree хотел выяснить на потом:)
В астероиде они используют его,а в материалах с конференции ,в примере менеджера -get distance, checkAABB.
Т.е.в крупных проектах PositionTree не подходит?

Const_47

Я не применяю такой подход. Может для астероид он и в сам раз, но для проектов побольше он лично мне не нравиться.

Load manager - в идеале singelton. Поскольку там все типы статичны инициализируется при старте. Потом подгружаю все ресурсы динамично. Тогда нет проблем с полоской подгрузки;)

Вообще старайся не зацикливаться на примерах ооп из папочки
Квеста. Иногда тот же билдер значительно предпочтительней фабрики и примеров можно привести массу. Изучай патерны, адаптируй к квесту, тесть на применимость. Буш шаг впереди планеты ;)   

По поводу Тree - дело скорее не в размере проекта, а в применимости-неприменимости к конкретным задачам. И ответить
на 100% можно только потеcтив:))) на своем конкретном примере. 

anval

Привет.Решил выбрать простой вариант,так и он не хочет работать в паблише.Почему?

Const_47

То есть, оно не работает именно при паблише?



anval

Ну да,когда запускаю exe.Может это связано с тем что,он запускается во временной папке?Я помню,промучился денек з загрузкой текстур,пока не прописал полный путь.Но тут что делать???

Const_47


Ну так отдебаж себе все переменные уже в паблише (2D Screen Text), те что в нерабочей логической церочке, что бы ты точно знал, работает - не работает, а может работает но не рисует.
Тогда точно будеш знать где ошибка.

Taм на пикче, ты используеш Win32 TexOut после Start 3D Scene
- получиш мерцание шрифта, юзай 2D Screen Text.