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 проге ты его меняешь а в запускаемой читаешь) все просто :)


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

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