|
06.01.2011, 17:17
|
#1
|
Знающий
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений (для 6 пользователей)
|
Непропорцональность разрешений
Например игруха делается под разрешение 1024*768.
А ее запускают на весь экран на разрешении 1280*1024.
Эти два разрешения немного не пропорциональны, в итоке ровный круг будет чуть вытянутым по высоте.
сейчас во многих играх встречаю решение этой проблемы: внизу и вверху образуются маленькие черные полоски высотой наверное по 20 пикселей, а сама рабочая область игры пропорционально растягивается. (В качестве примера можно взять любую веселую ферму начиная с третьей части, кажется)
Как они такое делают?
Видимо на блитце решение отсутсвует((((
Спасибо!
|
(Offline)
|
|
06.01.2011, 17:44
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Непропорцональность разрешений
Ну, значит, сам делай растягивание - ручками. Не всему же быть предусмотренным в движке?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
06.01.2011, 20:17
|
#3
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Непропорцональность разрешений
SetVievport нахрена прописали, а?
|
(Offline)
|
|
06.01.2011, 20:55
|
#4
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Непропорцональность разрешений
Ну давай блесни умом как ему это поможет.
__________________
|
(Offline)
|
|
06.01.2011, 21:04
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Непропорцональность разрешений
чтобы сместить точку начала рисования (Letterbox, windowbox). Только команда - Origin x,y.
Что любопытно -SetOrigin и SetViewport подсвечиваются, но хелпа к ним нет (Blitz3D Documentation Version No: 1.85 [1.88])
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
06.01.2011, 21:42
|
#6
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: Непропорцональность разрешений
Сообщение от ELIAS
Например игруха делается под разрешение 1024*768.
А ее запускают на весь экран на разрешении 1280*1024.
Эти два разрешения немного не пропорциональны, в итоке ровный круг будет чуть вытянутым по высоте.
сейчас во многих играх встречаю решение этой проблемы: внизу и вверху образуются маленькие черные полоски высотой наверное по 20 пикселей, а сама рабочая область игры пропорционально растягивается. (В качестве примера можно взять любую веселую ферму начиная с третьей части, кажется)
|
Если 2D используй Viewport x, y, ширина, высота
Если 3D используй CameraViewport перем, x, y, ширина, высота
|
(Offline)
|
|
06.01.2011, 23:57
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Непропорцональность разрешений
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
07.01.2011, 00:12
|
#8
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Непропорцональность разрешений
Если в игре это не предусмотрено, и не хочется потом путать квадраты и прямоугольники, то можно просто потыкаться в настройках экрана (не в компе, а прям на мониторе кнопочки есть). Одна из настроек-в случае несоответствия соотношения ширины-высоты экран добавляет по краям черные полоски когда надо, очень полезная штука
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
07.01.2011, 02:10
|
#9
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Непропорцональность разрешений
Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()
setProporcialViewport(1280,720)
camera=CreateCamera()
PositionEntity camera,0,0,-3
;привет, nuprahtor!
CameraClsColor camera,0,0,255
cub=CreateCube()
While Not KeyDown(1)
TurnEntity cub,0,1,0
RenderWorld
Flip
Wend
Function setProporcialViewport(width%,height%)
If Float(width)/Float(height)=Float(GraphicsWidth())/Float(GraphicsHeight()) Then Return
vw=GraphicsWidth()
vh=height*GraphicsHeight()/width
Viewport 0,(GraphicsHeight()-vh) Shr 1,vw,vh
End Function
Это?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2011, 02:25
|
#10
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Непропорцональность разрешений
А чо у кого то проблемы с 3D были?
__________________
|
(Offline)
|
|
07.01.2011, 02:42
|
#11
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: Непропорцональность разрешений
Сообщение от SBJoker
А чо у кого то проблемы с 3D были?
|
В 3D команду Viewport нужно использовать до создания камеры, иначе она не будет работать.
Попробуйте перенести функцию setProporcialViewport(1280,720) после камеры сами увидите.
Повторю еще раз:
Если 2D используй Viewport x, y, ширина, высота
Если 3D используй CameraViewport перем, x, y, ширина, высота
|
(Offline)
|
|
07.01.2011, 02:50
|
#12
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Непропорцональность разрешений
Сообщение от RBK
В 3D команду Viewport нужно использовать до создания камеры, иначе она не будет работать.
Попробуйте перенести функцию setProporcialViewport(1280,720) после камеры сами увидите.
Повторю еще раз:
Если 2D используй Viewport x, y, ширина, высота
Если 3D используй CameraViewport перем, x, y, ширина, высота
|
Судя по первому посту, менять viewport потом автору не понадобится, значится можно вызвать и до создания камеры.
|
(Offline)
|
|
07.01.2011, 03:15
|
#13
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: Непропорцональность разрешений
Согласен. Но лично мне не нравится когда команды в коде работают через раз. Нестабильный код потом трудно отладить.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2011, 10:52
|
#14
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Непропорцональность разрешений
Что-то не пойму суть проблемы. Если у тебя размеры отрисовки круга были привязаны к разрешению экрана (что-то типа ширина=GWidth*0.1/высота=GHeight*0.15) - то да, при изменении разрешения круг растянется. Только накуя? Если круг фиксированного размера в пикселях, он будет круглым смотреться при любом разрешении. Исключение - если ты на широкоэкранном мониторе выставляешь разрешение от 4:3 и наоборот. Но это опять же изврат
з.ы. если у тебя размер круга должен оставаться одинакового размера на экране при любом разрешении - делай привязку его размера только к GHeight (то есть ширина=GHeight*0.15/высота=GHeight*0.15), тогда смена разрешения на широкоэкранное и обратно тебе не страшна
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Amatsu за это полезное сообщение:
|
|
08.03.2011, 15:13
|
#15
|
Модератор
Регистрация: 05.11.2005
Сообщений: 161
Написано 63 полезных сообщений (для 182 пользователей)
|
Ответ: Непропорцональность разрешений
Вот доработанная функция. Добавлены черные полоски по бокам, например, для ноутбуков.
Graphics3D 1280,800,32,2
SetBuffer BackBuffer()
setProporcialViewport(1024,768)
camera=CreateCamera()
PositionEntity camera,0,0,-3
;привет, nuprahtor!
CameraClsColor camera,0,0,255
cub=CreateCube()
While Not KeyDown(1)
TurnEntity cub,0,1,0
RenderWorld
Flip
Wend
Function setProporcialViewport(width%,height%)
k# = Float(width)/Float(height)
kr# = Float(GraphicsWidth())/Float(GraphicsHeight())
If k = kr Then Return
If k > kr Then
vw=GraphicsWidth()
vh=vw/k
Viewport 0,(GraphicsHeight()-vh) Shr 1,vw,vh
Else
vh=GraphicsHeight()
vw=vh*k
Viewport (GraphicsWidth()-vw) Shr 1,0,vw,vh
EndIf
End Function
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:52.
|