|
FAQ Туториалы и часто задаваемые вопросы |
18.06.2007, 17:14
|
#1
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
смена разрешения.
Написали вы например игру, и радосно понесли в массы, чтоб они ее заценили, и тут некоторые говорят: "Разрешение слишком мальенькое".
можно сделать возможность выбора разрешения и ладное если ето дело касается основной игры (нарисовать пру панелек и все), но овт когда дело дохоит до всяких меню, окон статистики, справки, about, и т.д. то менять все ето жутко влом.
вот пример как обойти сию неприятность:
Global ark_blur_image_, ark_blur_texture_, ark_sw_, ark_sh_
Global BQuality_=1024
If hightresolution
Graphics3D 1024,768,32,1
cam=CreateCamera()
CameraClsMode cam, 0, 0
CameraRange cam, 0.1, 1.5
MoveEntity cam, 0, 0, 10000
ark_sw_ = GraphicsWidth()
ark_sh_ = GraphicsHeight()
;Create sprite
Local spr = CreateMesh(cam)
Local sf = CreateSurface(spr)
AddVertex sf, -1, 1, 0, 0, 0
AddVertex sf, 1, 1, 0, 1, 0
AddVertex sf, -1, -1, 0, 0, 1
AddVertex sf, 1, -1, 0, 1, 1
AddTriangle sf, 0, 1, 2
AddTriangle sf, 3, 2, 1
EntityFX spr, 17+4
ScaleEntity spr, Float(1024) / Float(800), Float(768) / Float(600), 1
PositionEntity spr, 0.28, -0.53,1.0
EntityOrder spr, -100000
ark_blur_image_ = spr
;Create blur texture
ark_blur_texture_ = CreateTexture(800, 600, 256)
EntityTexture spr, ark_blur_texture_
Else
Graphics3D 800,600,32,1
EndIf
Function RenderResolutionQuad()
CopyRect 0,0,800,600, 0, 0, BackBuffer(), TextureBuffer(ark_blur_texture_)
RenderWorld
End Function
While Not KeyDown(1)
Cls
Color 128,0,0
Rect 0,0,800,600,0
Color 192,192,192
Rect 10,10,780,580,0
Color 0,100,244
For i=40 To 760 Step 40
Line i,100,i,500
Next
If MouseX()>800 Then MoveMouse 800,MouseY()
If MouseY()>600 Then MoveMouse MouseX(),600
Oval MouseX()-3,MouseY()-3,7,7,0
If hightresolution Then RenderResolutionQuad()
Flip
Wend
, правда ето заточено на изминение разрешения с 800х600 на 1024х768, ну думаю вы догадаетесь какие цыфирки надо поменять.
|
(Offline)
|
|
30.07.2007, 23:10
|
#2
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: смена разрешения.
Чтото я не совсем понял что там в примере происходит...
Это что запускается в 1024 режиме и меняется на 800 сразу?
|
(Offline)
|
|
18.12.2007, 20:43
|
#3
|
Знающий
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений (для 8 пользователей)
|
Re: смена разрешения.
А что разве так разрешение нельзя менять, веть гораздо проще
Global a=1024
Global b=768
Graphics3D,a,b,32,1
...
...
...
Repeat
if ...
a=800
b=600
endif
...
|
(Offline)
|
|
18.12.2007, 20:47
|
#4
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: смена разрешения.
так не выйдет ...
|
(Offline)
|
|
18.12.2007, 20:57
|
#5
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: смена разрешения.
ark_blur_texture_ = CreateTexture(800, 600, 256)
|
ХолиДел, какие тебе текстуры 800х600 и 1024х768? 0_о
|
(Offline)
|
|
18.12.2007, 21:20
|
#6
|
Знающий
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений (для 8 пользователей)
|
Re: смена разрешения.
Ну в принципе я согласен, что именно так не получится, но посидев, поэкспериментировав с глобалом и поменяв некоторые строчки местами по-идее должно получиться
|
(Offline)
|
|
18.12.2007, 21:29
|
#7
|
Знающий
Регистрация: 06.10.2007
Сообщений: 225
Написано 15 полезных сообщений (для 21 пользователей)
|
Re: смена разрешения.
Сообщение от AndruXa
Ну в принципе я согласен, что именно так не получится, но посидев, поэкспериментировав с глобалом и поменяв некоторые строчки местами по-идее должно получиться
|
Причем тут глобальные переменные? Всё медия просто не будет подстраиваться под нужное разрешение, пока ты сам его не настроишь.
|
(Offline)
|
|
18.12.2007, 21:30
|
#8
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
Re: смена разрешения.
Global GW:Float, GH:Float
Global Width:Float=1024, Height:Float=768
GW = Width / 1024
GH = Height / 768
Graphics Width , Height
|
а потом все рендере всех изображение (не самих х и у положения рисунков, а именно при drawimage ) умонжаем x и y на GW и GH. чтобы размер был тоже нормальным, нужно еще и SetScale (в блитз3д другое) изменять так же, умнжоать на GW и GH.
В данном случае будет GW и GH = 1. А если сделать нужное расширение больше, то значение будут другие. Я подстраиваю игру под 1024х768. но потом с помощью GH и GW изменяю как надо.
|
(Offline)
|
|
18.12.2007, 23:25
|
#9
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Re: смена разрешения.
А по мне так правильнее делать меню заведомо приспособленное к смене разрешений, хоть и сторонник.. эм.. нестандартных решений.
Вот был бы облом, если бы в винде панель задач и ярлыки всегда были как при 640х480
А насчет размера текстур, это прикол.
|
(Offline)
|
|
18.12.2007, 23:29
|
#10
|
Знающий
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений (для 8 пользователей)
|
Re: смена разрешения.
Вот был бы облом, если бы в винде панель задач и ярлыки всегда были как при 640х480
|
Ниче, привыкли бы,как и ко многому другому. Можно со счету сбиться скольго багов мы винде простили, а казалось бы не за что, ну вот приглянулась виндовс России можно даже сказать с первого взгляда
|
(Offline)
|
|
18.12.2007, 23:30
|
#11
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: смена разрешения.
Дипломат, они вроде сами до степени двойки расширяются.
FrankH, естественно правельнее. если писать такую систему с нуля. а если уже написно 100к кода на конкретное разрешение, то все переписывать будет лениво.
Почему приглянулся Виндоус? а где ты еще найдеш опреационку за 5$ ? )))
|
(Offline)
|
|
18.12.2007, 23:40
|
#12
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: смена разрешения.
они вроде сами до степени двойки расширяются.
|
Иногда. Если повезет с видеокартой.
А если не повезет?
Да и разве не логичней самому выбрать подходящую степень двойки и производить все расчёты изначально с ней, а не с некими абстрактными и непонятными для текстуры цифрами "800" и "600"?
|
(Offline)
|
|
19.12.2007, 04:03
|
#13
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: смена разрешения.
Для 3д ничего делать не нужно.
А 2д оч просто подстраивется множителем (например k_img#=1024/GraphicsWidth() )
Множитель на рескейл картинки после загрузки и на позицию при перерисовке.
__________________
|
(Offline)
|
|
19.12.2007, 09:37
|
#14
|
Бывалый
Регистрация: 22.09.2005
Сообщений: 634
Написано 36 полезных сообщений (для 102 пользователей)
|
Re: смена разрешения.
Ну если создавать через CreateTextureRT(800, 600), то можно юзать любые разрешения и всё будет работать(правда, на счёт совсем старых видюх не уверен)
|
(Offline)
|
|
19.12.2007, 14:55
|
#15
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Re: смена разрешения.
2 all:
а что layout manager написать религия не позволяет?
2 НУБ:
колись, где брать хелп на новые функции Блица, а то офф доки отстают на 15 апдейтов.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:46.
|