forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   zoom2 (http://forum.boolean.name/showthread.php?t=9100)

teremochek 08.09.2009 00:26

zoom2
 
Здраствуйте! Скажите пожалуйста могу ли я сделать, что бы изображение моей игры растягивалось на весь экран?
Игра состоит из 104 Drawimage по 48 на 48 пикселей. При попытке сделать SetScale, за место зума, я получаю увеличение картинок, и они наезжают одна на другую.
По идее в моей игре должно быть разрешение 640 на 400, но почемуто оно отображаеться как 640 на 480(Монитор ACER2416W )
Если бы 640 на 400 правильно отображалось, то пиксели были бы квадратные, а не прямоугольные, и проблемма возможно решилась!..:SOS:

teremochek 08.09.2009 00:44

Ответ: zoom2
 
Да Кстати! В оконном режиме выглядит все правилино!

NitE 08.09.2009 20:08

Ответ: zoom2
 
рекомендую разбить проблемы на пункты (с конкретным описанием проблемных участков)

jimon 08.09.2009 20:20

Ответ: zoom2
 
teremochek
тебе нужно помимо увелечения самих картинок, сдвигать их координаты (те умножать на scale)

Dream 08.09.2009 21:07

Ответ: zoom2
 
две переменых отвечающих за скале по х и у определяются типа (требуемый размер экрана)/( имеющийся размер экрана) и отрисовуешь произведения этой величины на кординату где у тебя должно отображатся по идее изображение + делать Scale имагам на эти велечины

teremochek 09.09.2009 01:46

Ответ: zoom2
 
Цитата:

Сообщение от jimon (Сообщение 117991)
teremochek
тебе нужно помимо увелечения самих картинок, сдвигать их координаты (те умножать на scale)

Не плохая идея, но все коллизии игры пойдут на смарку...
Если сдвигать координаты, то соответственно в картинке будет больше пикселей(из за scale)и я не смогу сделать точные коллизии...
Вот 640*400 в оконном режиме..Все как надо.Только я не понимаю почему когда я делаю full screen то появляеться полоса с верху и полоса с низу...(Может это из за широкоформатного монитора?)

Черный крыс 14.09.2009 23:01

Ответ: zoom2
 
пикселя у монитора всегда квадратные ;)

ABTOMAT 14.09.2009 23:27

Ответ: zoom2
 
Когда пытаешься включить 1024*768 на ноутбуке 1366*768 - далеко не квадратные ;)
Но фишка в том, что все расстояния меряются в тех же пикселях, и то, как ЦАП видеокарты искажает изображение, чтобы оно влезло в широкоформатный монитор, никакого значения не имеет, и выполняется "пост-фактум"...

jimon 15.09.2009 01:41

Ответ: zoom2
 
Цитата:

ЦАП видеокарты искажает изображение, чтобы оно влезло в широкоформатный монитор
это делает процессор монитора

SBJoker 15.09.2009 01:48

Ответ: zoom2
 
ммм? ти точно уверен? Что монитор сам картинку нужного разрешения делает?
Я то всё думал что он готовую картинку конкретного разрешения тупо выводит интерполируя между пикселями если надо.

teremochek 16.09.2009 14:34

Ответ: zoom2
 
Вот например, я в Counter Strike, делаю разрешение 1920x1080, и изображение получаеться вытянутое по вертикали.(родное разрешение 1920x1200). а в моей игре, чего-то не вытягиваеться.....
Нет! вот только-что попробывал с 1920x1080, и оно растягиваеться!
А 640x400 не чего-то не хочет...(притом 640x400 теперь не запускаеться ...Вылетает и пишет "Unhandled Exception:GLGraphicsDriver failed to set display mode")

Randomize 16.09.2009 17:07

Ответ: zoom2
 
Цитата:

Сообщение от teremochek (Сообщение 118741)
Вот например, я в Counter Strike, делаю разрешение 1920x1080, и изображение получаеться вытянутое по вертикали.(родное разрешение 1920x1200). а в моей игре, чего-то не вытягиваеться.....
Нет! вот только-что попробывал с 1920x1080, и оно растягиваеться!
А 640x400 не чего-то не хочет...

Разрешения чёт какието стрёмные... Ноутбук?
В CounterStrike родное 800х600 а суперское 1024х768.
Эти разрешения самым лучшим образом вписываются в монитор настольного компьютера.
С ноутбуками оптимальное на мой взгляд 1280x800.

А вот 1920x1080
и 640x400 даж не знаю :/

ABTOMAT 16.09.2009 20:54

Ответ: zoom2
 
Цитата:

Вот например, я в Counter Strike, делаю разрешение 1920x1080, и изображение получаеться вытянутое по вертикали.(родное разрешение 1920x1200). а в моей игре, чего-то не вытягиваеться.....
Ты не путай изменение матрицы проекции на экран и интерполяцию пикселей

teremochek 16.09.2009 23:03

Ответ: zoom2
 
) А не поведаеш в чем разница., и как ими пользоваться ?

ABTOMAT 16.09.2009 23:46

Ответ: zoom2
 
Ну то есть у тебя CS думает, что монитор 1920x1080 и рендерит соответствующе, и затем растягивает по вертикали в "родные" 1920x1200, т.к. ЖК иначе не понимает.
А бывает, что картинка растягивается уже во время трансформации, перед рендером (т.е. FOV камеры неправильный)

teremochek 17.09.2009 00:05

Ответ: zoom2
 
Цитата:

Сообщение от ABTOMAT (Сообщение 118789)
Ну то есть у тебя CS думает, что монитор 1920x1080 и рендерит соответствующе, и затем растягивает по вертикали в "родные" 1920x1200, т.к. ЖК иначе не понимает.
А бывает, что картинка растягивается уже во время трансформации, перед рендером (т.е. FOV камеры неправильный)

Вроде понял. Те. матрицу проэкции изменяет монитор, а интерполяцию пикселей изменяет код игры и видеокарта...

ABTOMAT 17.09.2009 00:13

Ответ: zoom2
 
Нет, неправильно понял :wallbash: Наоборот
Это, наверное, я тупо рассказал, тут рассказано получше:
http://www.lki.ru/text.php?id=3857
Матрица проекции никакого отношения к 2Д-графике не имеет (я имел ввиду математическую матрицу, а не ЖК).

teremochek 17.09.2009 12:08

Ответ: zoom2
 
Цитата:

Сообщение от jimon (Сообщение 117991)
teremochek
тебе нужно помимо увелечения самих картинок, сдвигать их координаты (те умножать на scale)

Спасибо!Хорошо работает.
Цитата:

Не плохая идея, но все коллизии игры пойдут на смарку...
Если сдвигать координаты, то соответственно в картинке будет больше пикселей(из за scale)и я не смогу сделать точные коллизии...
Смог! Все оказалось просто. Коллизии выщитываются без умножения на scale:
...
Drawimage player,x*zoom,y*zoom
If x>48 then x=48
...
Получаеться что изображение высчитываеться в одном измерении, а коллизия в другом.Т.е. Искажаеться только изображение, а физика игры не меняеться...

teremochek 18.09.2009 11:37

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

jimon 18.09.2009 11:43

Ответ: zoom2
 
teremochek
хранить картинки в png, делать scale с фильтрацией (хотя в динамике это тяжко), отключить фильтрацию текстур в blitzmax'е (а есть ли она ?)

teremochek 23.09.2009 00:23

Ответ: zoom2
 
Цитата:

Сообщение от jimon (Сообщение 118925)
teremochek
хранить картинки в png, делать scale с фильтрацией (хотя в динамике это тяжко), отключить фильтрацию текстур в blitzmax'е (а есть ли она ?)

Картинки у меня а png, На счет фильтрации немогу ответить, может кто умеет филтрацией в BlitzMax пользоваться ?
У меня получилось, сделав соотношение scaleX 0.97, scaleY 1.02(или менее)

Притом в новой версии BlitzMzx 1.33 это не прокатывает,т.е. При любом scale есть разводы.(Моя версия 1.12)
Еще заметил что если двигать изображение, по долям пикселей (X=x+0.2),
то можно заметить, что разводы меняют положение(то сверху, то снизу и т.l.)

SBJoker 23.09.2009 00:30

Ответ: zoom2
 
В Бмаксе может происходить заблюривание картинки если выставить начало координат картинки в дробную величину. Так же стандартная функция MidHandle выставляет дробные значения якоря картинки, и приводит к заблюриванию..

teremochek 27.09.2009 08:01

Ответ: zoom2
 
Цитата:

Сообщение от SBJoker (Сообщение 119476)
В Бмаксе может происходить заблюривание картинки если выставить начало координат картинки в дробную величину. Так же стандартная функция MidHandle выставляет дробные значения якоря картинки, и приводит к заблюриванию..

А его можно как-то отключить, или сменить цвет ? Или возможно существуют разные виды заблюривания ?

SBJoker 27.09.2009 12:30

Ответ: zoom2
 
я же написал просто ставьте якорь на целое число пикселей.

teremochek 28.09.2009 00:08

Ответ: zoom2
 
Если я делаю scale меньше,чем 0.98(по одной из оси координат, то разводы пропадают). Но все равно при этих условиях мне не удаеться сделать картинку нужного размера...Хотя, если уменьшить разрешение,
(а scale при этом остаеться таким-же),а затем уменьшить scale, то нужный размер картинки, без разводов получаеться..,Вот только при этом у меня искажаються некоторые линии и текст!

teremochek 30.09.2009 00:18

Ответ: zoom2
 
Цитата:

Сообщение от teremochek (Сообщение 118924)
Когда я делаю Scale, то около некоторых пикселей появляються разводы..
Их можно как-нибуть убрать ?

Можно! Для этого нужно использовать SetMaskColor!
(А раньше я просто вырезал images с помощью Фотошопа, и при использовании SetScale появлялись эти серые разводы)


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

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