forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   смена разрешения. (http://forum.boolean.name/showthread.php?t=3679)

HolyDel 18.06.2007 17:14

смена разрешения.
 
Написали вы например игру, и радосно понесли в массы, чтоб они ее заценили, и тут некоторые говорят: "Разрешение слишком мальенькое".
можно сделать возможность выбора разрешения и ладное если ето дело касается основной игры (нарисовать пру панелек и все), но овт когда дело дохоит до всяких меню, окон статистики, справки, 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, ну думаю вы догадаетесь какие цыфирки надо поменять.

Crystal 30.07.2007 23:10

Re: смена разрешения.
 
Чтото я не совсем понял что там в примере происходит...
Это что запускается в 1024 режиме и меняется на 800 сразу?

AndruXa 18.12.2007 20:43

Re: смена разрешения.
 
А что разве так разрешение нельзя менять, веть гораздо проще
Global a=1024
Global b=768
Graphics3D,a,b,32,1
...
...
...
Repeat
if ...
a=800
b=600
endif
...

H@NON 18.12.2007 20:47

Re: смена разрешения.
 
так не выйдет;)...

Diplomat 18.12.2007 20:57

Re: смена разрешения.
 
Цитата:

ark_blur_texture_ = CreateTexture(800, 600, 256)
ХолиДел, какие тебе текстуры 800х600 и 1024х768? 0_о

AndruXa 18.12.2007 21:20

Re: смена разрешения.
 
Цитата:

так не выйдет...
Ну в принципе я согласен, что именно так не получится, но посидев, поэкспериментировав с глобалом и поменяв некоторые строчки местами по-идее должно получиться

Bagration 18.12.2007 21:29

Re: смена разрешения.
 
Цитата:

Сообщение от AndruXa
Ну в принципе я согласен, что именно так не получится, но посидев, поэкспериментировав с глобалом и поменяв некоторые строчки местами по-идее должно получиться

Причем тут глобальные переменные? :) Всё медия просто не будет подстраиваться под нужное разрешение, пока ты сам его не настроишь.

Данил 18.12.2007 21:30

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 изменяю как надо.

FrankH 18.12.2007 23:25

Re: смена разрешения.
 
А по мне так правильнее делать меню заведомо приспособленное к смене разрешений, хоть и сторонник.. эм.. нестандартных решений.
Вот был бы облом, если бы в винде панель задач и ярлыки всегда были как при 640х480 :crazy:
А насчет размера текстур, это прикол. :)

AndruXa 18.12.2007 23:29

Re: смена разрешения.
 
Цитата:

Вот был бы облом, если бы в винде панель задач и ярлыки всегда были как при 640х480
Ниче, привыкли бы,как и ко многому другому. Можно со счету сбиться скольго багов мы винде простили, а казалось бы не за что, ну вот приглянулась виндовс России можно даже сказать с первого взгляда

HolyDel 18.12.2007 23:30

Re: смена разрешения.
 
Дипломат, они вроде сами до степени двойки расширяются.

FrankH, естественно правельнее. если писать такую систему с нуля. а если уже написно 100к кода на конкретное разрешение, то все переписывать будет лениво.

Почему приглянулся Виндоус? а где ты еще найдеш опреационку за 5$ ? )))

Diplomat 18.12.2007 23:40

Re: смена разрешения.
 
Цитата:

они вроде сами до степени двойки расширяются.
Иногда. Если повезет с видеокартой.
А если не повезет?
Да и разве не логичней самому выбрать подходящую степень двойки и производить все расчёты изначально с ней, а не с некими абстрактными и непонятными для текстуры цифрами "800" и "600"?
:)

tormoz 19.12.2007 04:03

Re: смена разрешения.
 
Для 3д ничего делать не нужно.
А 2д оч просто подстраивется множителем (например k_img#=1024/GraphicsWidth() )
Множитель на рескейл картинки после загрузки и на позицию при перерисовке.

НУБ 19.12.2007 09:37

Re: смена разрешения.
 
Ну если создавать через CreateTextureRT(800, 600), то можно юзать любые разрешения и всё будет работать(правда, на счёт совсем старых видюх не уверен) ;)

ffinder 19.12.2007 14:55

Re: смена разрешения.
 
2 all:
а что layout manager написать религия не позволяет?
2 НУБ:
колись, где брать хелп на новые функции Блица, а то офф доки отстают на 15 апдейтов.


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

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