![]() |
смена разрешения
Такой вопрос -
если в программе снова вызвать bbGraphics3D() с новыми параметрами, то что то удаляется? спрайты, камера, свет? Раньше перед сменой разрешения был Clearworld() и повторная загрузка всех энтити. А теперь программа виснет после нового вызова графики. Вообще пример по корректному переключению разрешения внутри программы хотелось бы, без очистки всего мира. |
Ответ: смена разрешения
начал потихоньку разбираться:
во-первых удаляются шрифты, их надо грузить заново |
Ответ: смена разрешения
на самом деле без отчистки всего мира разрешение не переключить никак, потомучто заново пересоздается девайс и теряются все загруженные в видеопамять ресурсы. мое имхо - на самом деле не нужно сменять разрешение в программе. Или сделай внешний файл - или пиши в программе, что на самом деле ее нужно перезапустить после смены разрешения, и на самом деле только после етого прмиенится новое разрешение.
|
Ответ: смена разрешения
Так, понятно - видимо смена графики убивает вообще все :(
|
Ответ: смена разрешения
на самом деле - шрифты это тоже текстура. и тоже хранится в видеопамяти (наверное).
у меня было очень много глюков с динамичной сменой разрешения. поетому я забил на него - просто пишу жирную мигающую надпись - перезапусти программу. |
Ответ: смена разрешения
Можно переключать без очистки - но приходится грузить все заново. Вот такая ерунда.
Просто хотелось сделать как в обычных играх. Может просто перезапускать программу и откатывать ее до этого момента? Перезапуск приложения ведь можно сделать? |
Ответ: смена разрешения
В каждой второй обычной игре именно так и делают - пишут здоровую надпись "Перезапусти игру"
Либо переключить разрешение можно только в меню. А меню загрузить заново намного легче чем непосредственно игру. |
Ответ: смена разрешения
тут в чем загвоздка, на самом деле еще до загрузки меню (где можно выбрать уровень например) часто грузят всякие уровненезависимые вещи. Например игрока и его подругу )) Чтобы не грузить каждый раз заново. На мой взгляд - не стоит 10 секунд на перезапуск игры столького геморроя, сколько его вызывает реализация "горячей" смены разрешения.
|
Я в меню и переключаю.
Дело в том, что между меню и остальными местами не должно быть рывка со сменой разрешения (или просто с перезагрузкой без смены разрешения). Сейчас все работает, но маска спрайтов опять нарушается если в меню переключить разрешение и все загрузить снова - потому что при смене разрешения приходится грузить все элементы - и меню и остальное. Вобщем мне надо либо программно перезапускать приложение, либо понять почему нарушается маска. Есть конечно еще один вариант - с добавлением минимальной альфы маска действует, но появляются небольшие пиксельные артефакты. Я конечно могу делать первую загрузку объектов уровня после выхода из меню дальше в игру, но игрок может вернуться обратно в меню из игры (при этом игровые объекты спрячутся, а не сотрутся) и переключить таки разрешение. Тогда привет маска :) Не помогает даже принудительное удаление каждого спрайта перед сменой разрешения. |
Ответ: смена разрешения
кстати я делал в меню переключалку разрешений - но была одна проблема - при разе 3ем - разрешение слетало
вобщем половину рисовалось черным как спрайт как будто загораживет камеру. Щас уже не помню , но делал прям без перегрузки смену разрешений - это точно. вобщем писал в .ini и оттуда читал. |
Да, тоже примерно на третьем разе маска рушится :)
А разрешения и так в файл сохраняются, а потом игра меняет разрешение на новое. Короче при первой смене разрешения назначу альфу спрайтам, пока так. после смены разрешения назначение альфы лечит проблему, главное назначить ее спрайту до создания копий. |
Ответ: смена разрешения
Наверно дело в том что копии спрайтов находятся в массиве с типом,
наверно нужно массив с типом объявлять заново? (попробовал - не помогает :( ) |
Ответ: смена разрешения
я просто написал внешний перезагрузчик на пурике
запускаю его из блитца и закрываю программу. он запускается ждет 5 сек. и запускает игру заново |
Ответ: смена разрешения
собственно сильно будет необходимо так и сделаю, тем более на PureBasic + Blitz3Dsdk делаю
|
Ответ: смена разрешения
Я кароч сделал 2 ексешки - 1 меню установок - из нее запускаетсья основная ексешка программы. Конфиг файл один на 2 (в 1 проге ты его меняешь а в запускаемой читаешь) все просто :)
|
Ответ: смена разрешения
собственно способ Tormoz'а лучше, потому как не всегда надо менять разрешение и незачем каждый раз одно из другого запускать.
|
Ответ: смена разрешения
А я считаю что перезагрузка экрана - последнее дело.
Если уж так хочется, то можно потратить несколько дней на этот гемор. Но вряд-ли кто оценит эту кропотливую работу 5 сек. пролетят и все. Такие вещи лучше оставлять на самый конец работы, когда проект готов более чем на 95%. Если проект не дойдет до этой цифры, то и нечего было времени терять. Вот я довел свой проект до 95%, сделал перезагрузку экрана и на этом и застрял... потому что пришлось подводить под новые координаты и шрифты и вывод информации и объекты... :''(( |
Ответ: смена разрешения
Собственно ты сам же себе противоречишь, нет? :)
В том то и дело, что лучше закладывать это все в проекте сразу, все его возможные функции. Ну вот например если какая-то вешь мне потребуется пару раз, то проще ее расписать как обычно. А если часто и в разных местах - то надо постараться свернуть ее в универсальную функцию и отделить. Конечно все учесть всеравно не получится и многое нужно будет переписать, но это гораздо легче когда изначально все держишь в голове и стараешься писать с учетом этих будущих особенностей. Относительно важности смены разрешений: да в своем проекте она у меня запланирована на финальный этап, но я знаю как именно я собираюсь ее реализовать. если поделиться опытом коммерческой разработки в студии, чем сейчас кстати и занимаюсь, то тут положение не такое замечательное как при собственной разработке: так как мне пришлось писать основу механики на блице, потом перегонять код пока он сильно не разросся в пурбейсик (в принципе простое действо но нужно привыкнуть - некоторые функции не перенесены, так как есть сходные пурбейсиковские - например функция и процедура, типы и структуры, и так далее). после этого пришлось подключать разные вещи для инсталятора, привязывать уже наработанный контент, прикреплять наработки по ГУИ. после чего я смог получить инсталирующее приложение демонстрирующее только один уровень с механикой. потом начался процесс добавления меню и еще одного экрана, через инклюд. позже пришлось все это переписать в единую программу, тут же требование переключения разрешений - написал, плюс конфиг-файл. тут как бы не я ставлю условия - а мне дают задачу - нужно то-то и то-то, и не потом, а СЕЙЧАС. так что тут помогает только самоорганизация процесса, потому что постоянно прыгаешь с одного на другое (конечно планирование у нас не идеальное - например замер и тест фпс я бы производил в самом начале процесса - , но я думаю это не такое уж редкое явление). тем более заказчиков ведь особо не волнует процент готовности игры, они уже хотят ее посмотреть. и чтобы все основное работало. а основным они считают не то что думает программист - переключается разрешение, уже хорошо, курсоры анимированы - замечательно. Так что в моем случае это неизбежный гемор, особенно если учесть что половину вещей пришлось писать и придумывать впервые. Конечно опыт в собственном проекте (даже не одном, просто остальные в очереди на производство, для начала выбран более проработанный (Аватары - тем более что их механика переписывалась раз пять - пришлось выкидывать куски хорошего реалтайм кода, переписывать на походовость, потом упрощать для понимания и лучшего управления, а потом вообще появилась совершенно другая механика. отсюда кстати вывод - нужно иметь концепцию, а к ней подбирать механику. и не пытаться развивать механику противоречащую концепции)) очень помог. Там да - можно переносить все маловажное с точки зрения основного процесса на потом, в коммерческом проекте так скорее всего не получится, если только процесс программирования не контролируется. |
Ответ: смена разрешения
Блин - зря ты не сделал по моему совету. Забыл бы про смену разрешения как страшный сон - причем для всех своих будущих проектов ввобще. Это потому что надо сделать 1 раз как я сделал. Позже выкину посмотришь. щас пока немогу. А работать так конешно сложнее - я тебя оч понимю :) -когда все хотят видеть чтото сейчас :) - и на организацию процесса не остаеться времени:(. уменя также собственно :(. удачи!
|
Ответ: смена разрешения
ну переключение то я сделал уже. пока нормально.
твой вариант не очень подходит потому что очень желательно чтобы во время игры между перескакиванием из меню в игру и обратно не было никаких выскакиваний черных окон. на тестовом компе это особенно заметно. так что написать таким образом я не мог - хотят чтобы все как в нормальных играх, чтобы между меню и игрой не было никаких швов. а выйти в меню из игры и переключать - в любой момент. :) |
Ответ: смена разрешения
ясно :) хотя я чет даже не замечал у себя черных окон :)
|
Ответ: смена разрешения
я тоже не замечал :)
а тестовая видеокарта замечает :) |
Часовой пояс GMT +4, время: 10:47. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot