forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   смена разрешения (http://forum.boolean.name/showthread.php?t=6162)

NoNsense 24.07.2008 13:18

смена разрешения
 
Такой вопрос -
если в программе снова вызвать
bbGraphics3D() с новыми параметрами,
то что то удаляется? спрайты, камера, свет?
Раньше перед сменой разрешения был Clearworld() и повторная загрузка всех энтити.
А теперь программа виснет после нового вызова графики.

Вообще пример по корректному переключению разрешения внутри программы хотелось бы, без очистки всего мира.

NoNsense 24.07.2008 13:33

Ответ: смена разрешения
 
начал потихоньку разбираться:
во-первых удаляются шрифты, их надо грузить заново

HolyDel 24.07.2008 13:34

Ответ: смена разрешения
 
на самом деле без отчистки всего мира разрешение не переключить никак, потомучто заново пересоздается девайс и теряются все загруженные в видеопамять ресурсы. мое имхо - на самом деле не нужно сменять разрешение в программе. Или сделай внешний файл - или пиши в программе, что на самом деле ее нужно перезапустить после смены разрешения, и на самом деле только после етого прмиенится новое разрешение.

NoNsense 24.07.2008 13:43

Ответ: смена разрешения
 
Так, понятно - видимо смена графики убивает вообще все :(

HolyDel 24.07.2008 13:45

Ответ: смена разрешения
 
на самом деле - шрифты это тоже текстура. и тоже хранится в видеопамяти (наверное).

у меня было очень много глюков с динамичной сменой разрешения. поетому я забил на него - просто пишу жирную мигающую надпись - перезапусти программу.

NoNsense 24.07.2008 13:46

Ответ: смена разрешения
 
Можно переключать без очистки - но приходится грузить все заново. Вот такая ерунда.
Просто хотелось сделать как в обычных играх. Может просто перезапускать программу и откатывать ее до этого момента? Перезапуск приложения ведь можно сделать?

ABTOMAT 24.07.2008 13:53

Ответ: смена разрешения
 
В каждой второй обычной игре именно так и делают - пишут здоровую надпись "Перезапусти игру"
Либо переключить разрешение можно только в меню.
А меню загрузить заново намного легче чем непосредственно игру.

HolyDel 24.07.2008 13:58

Ответ: смена разрешения
 
тут в чем загвоздка, на самом деле еще до загрузки меню (где можно выбрать уровень например) часто грузят всякие уровненезависимые вещи. Например игрока и его подругу )) Чтобы не грузить каждый раз заново. На мой взгляд - не стоит 10 секунд на перезапуск игры столького геморроя, сколько его вызывает реализация "горячей" смены разрешения.

NoNsense 24.07.2008 14:03

Я в меню и переключаю.
Дело в том, что между меню и остальными местами не должно быть рывка со сменой разрешения (или просто с перезагрузкой без смены разрешения).
Сейчас все работает, но маска спрайтов опять нарушается если в меню переключить разрешение и все загрузить снова - потому что при смене разрешения приходится грузить все элементы - и меню и остальное.
Вобщем мне надо либо программно перезапускать приложение, либо понять почему нарушается маска. Есть конечно еще один вариант - с добавлением минимальной альфы маска действует, но появляются небольшие пиксельные артефакты.

Я конечно могу делать первую загрузку объектов уровня после выхода из меню дальше в игру, но игрок может вернуться обратно в меню из игры (при этом игровые объекты спрячутся, а не сотрутся) и переключить таки разрешение. Тогда привет маска :)

Не помогает даже принудительное удаление каждого спрайта перед сменой разрешения.

Alex_Noc 24.07.2008 14:16

Ответ: смена разрешения
 
кстати я делал в меню переключалку разрешений - но была одна проблема - при разе 3ем - разрешение слетало
вобщем половину рисовалось черным как спрайт как будто загораживет камеру.
Щас уже не помню , но делал прям без перегрузки смену разрешений - это точно.
вобщем писал в .ini и оттуда читал.

NoNsense 24.07.2008 14:21

Да, тоже примерно на третьем разе маска рушится :)
А разрешения и так в файл сохраняются, а потом игра меняет разрешение на новое.
Короче при первой смене разрешения назначу альфу спрайтам,
пока так.

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

NoNsense 24.07.2008 14:51

Ответ: смена разрешения
 
Наверно дело в том что копии спрайтов находятся в массиве с типом,
наверно нужно массив с типом объявлять заново?
(попробовал - не помогает :( )

tormoz 25.07.2008 13:32

Ответ: смена разрешения
 
я просто написал внешний перезагрузчик на пурике
запускаю его из блитца и закрываю программу.
он запускается ждет 5 сек. и запускает игру заново

NoNsense 28.07.2008 06:43

Ответ: смена разрешения
 
собственно сильно будет необходимо так и сделаю, тем более на PureBasic + Blitz3Dsdk делаю

Alex_Noc 30.07.2008 01:20

Ответ: смена разрешения
 
Я кароч сделал 2 ексешки - 1 меню установок - из нее запускаетсья основная ексешка программы. Конфиг файл один на 2 (в 1 проге ты его меняешь а в запускаемой читаешь) все просто :)

NoNsense 30.07.2008 19:49

Ответ: смена разрешения
 
собственно способ Tormoz'а лучше, потому как не всегда надо менять разрешение и незачем каждый раз одно из другого запускать.

Spiderman 07.08.2008 17:57

Ответ: смена разрешения
 
А я считаю что перезагрузка экрана - последнее дело.
Если уж так хочется, то можно потратить несколько дней на этот гемор. Но вряд-ли кто оценит эту кропотливую работу 5 сек. пролетят и все.
Такие вещи лучше оставлять на самый конец работы, когда проект готов более чем на 95%. Если проект не дойдет до этой цифры, то и нечего было времени терять.

Вот я довел свой проект до 95%, сделал перезагрузку экрана и на этом и застрял... потому что пришлось подводить под новые координаты и шрифты и вывод информации и объекты... :''((

NoNsense 07.08.2008 22:53

Ответ: смена разрешения
 
Собственно ты сам же себе противоречишь, нет? :)
В том то и дело, что лучше закладывать это все в проекте сразу,
все его возможные функции. Ну вот например если какая-то вешь мне потребуется пару раз, то проще ее расписать как обычно. А если часто и в разных местах - то надо постараться свернуть ее в универсальную функцию и отделить. Конечно все учесть всеравно не получится и многое нужно будет переписать, но это гораздо легче когда изначально все держишь в голове и стараешься писать с учетом этих будущих особенностей.
Относительно важности смены разрешений:
да в своем проекте она у меня запланирована на финальный этап, но
я знаю как именно я собираюсь ее реализовать.
если поделиться опытом коммерческой разработки в студии, чем сейчас кстати и занимаюсь, то тут положение не такое замечательное как при собственной разработке:
так как мне пришлось писать основу механики на блице, потом перегонять код пока он сильно не разросся в пурбейсик (в принципе простое действо но нужно привыкнуть - некоторые функции не перенесены, так как есть сходные пурбейсиковские - например функция и процедура, типы и структуры, и так далее).
после этого пришлось подключать разные вещи для инсталятора, привязывать уже наработанный контент, прикреплять наработки по ГУИ.
после чего я смог получить инсталирующее приложение демонстрирующее только один уровень с механикой.
потом начался процесс добавления меню и еще одного экрана,
через инклюд. позже пришлось все это переписать в единую программу,
тут же требование переключения разрешений - написал, плюс конфиг-файл.
тут как бы не я ставлю условия - а мне дают задачу - нужно то-то и то-то, и не потом, а СЕЙЧАС. так что тут помогает только самоорганизация процесса, потому что постоянно прыгаешь с одного на другое (конечно планирование у нас не идеальное - например замер и тест фпс я бы производил в самом начале процесса - , но я думаю
это не такое уж редкое явление).
тем более заказчиков ведь особо не волнует процент готовности игры, они уже хотят ее посмотреть. и чтобы все основное работало. а основным они считают не то что думает программист - переключается разрешение, уже хорошо, курсоры анимированы - замечательно.
Так что в моем случае это неизбежный гемор, особенно если учесть что
половину вещей пришлось писать и придумывать впервые. Конечно опыт в собственном проекте (даже не одном, просто остальные в очереди на производство, для начала выбран более проработанный (Аватары - тем более что их механика переписывалась раз пять - пришлось выкидывать куски хорошего реалтайм кода, переписывать на походовость, потом упрощать для понимания и лучшего управления, а потом вообще появилась совершенно другая механика. отсюда кстати вывод - нужно иметь концепцию, а к ней подбирать механику. и не пытаться развивать механику противоречащую концепции)) очень помог. Там да - можно переносить все маловажное с точки зрения основного процесса на потом, в коммерческом проекте так скорее всего не получится, если только процесс программирования не контролируется.

Alex_Noc 08.08.2008 00:31

Ответ: смена разрешения
 
Блин - зря ты не сделал по моему совету. Забыл бы про смену разрешения как страшный сон - причем для всех своих будущих проектов ввобще. Это потому что надо сделать 1 раз как я сделал. Позже выкину посмотришь. щас пока немогу. А работать так конешно сложнее - я тебя оч понимю :) -когда все хотят видеть чтото сейчас :) - и на организацию процесса не остаеться времени:(. уменя также собственно :(. удачи!

NoNsense 08.08.2008 08:02

Ответ: смена разрешения
 
ну переключение то я сделал уже. пока нормально.
твой вариант не очень подходит потому что очень желательно
чтобы во время игры между перескакиванием из меню в игру и обратно
не было никаких выскакиваний черных окон. на тестовом компе это особенно заметно.
так что написать таким образом я не мог - хотят чтобы все как в нормальных играх, чтобы между меню и игрой не было никаких швов.
а выйти в меню из игры и переключать - в любой момент.
:)

Alex_Noc 08.08.2008 16:33

Ответ: смена разрешения
 
ясно :) хотя я чет даже не замечал у себя черных окон :)

NoNsense 10.08.2008 10:19

Ответ: смена разрешения
 
я тоже не замечал :)
а тестовая видеокарта замечает :)


Часовой пояс GMT +4, время: 10:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot