|
2D-программирование Вопросы, касающиеся двумерного программирования |
05.02.2012, 17:15
|
#1
|
AnyKey`щик
Регистрация: 03.01.2012
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Вопрос об изображениях
Буду краток, дело обстоит так:
С помощью цикла и вложенного в него цикла я рисую тайловую карту. После этого поверх неё я рисую изображение персонажа в координатах X и Y.
Используя backbuffer я постоянно выполняю cls и flip, после чего снова перерисовывается тайловая карта (порядка двухсот тайлов) и изображение персонажа, с изменившимися координатами. Сколько там фпс в блитце, 60? Отсюда выходит 60*кол-во тайлов на карте = 12000 операций в секунду.
Если экран не очищать и перемещать персонажа, то будет куча одинаковых картинок персонажа на экране. Однако, не трудно ли компьютеру перерисовывать заново тайловую карту после cls?
Можно ли один раз нарисовать полностью карту и лишь изменять положение персонажа на ней?
|
(Offline)
|
|
05.02.2012, 17:29
|
#2
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Вопрос об изображениях
Фпс в Blitz не зафиксирован и зависит от мощности компьютера.
Чтоб его ограничить, (например до 60) нужно что-то вроде дельтатайминга (гуглить по форуму, есть много тем).
Обычно он достигает больших значений.
Вообще компьютеру не трудно. В любой видео-игре происходит постоянное выполнение тысяч операций в секунду. На то они и "видео"-игры.
Кстати, если перерисовывается так и так весь экран (сначала трава, потом гг, потом гуи), то и cls в начале цикла не обязателен вроде.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.02.2012, 17:44
|
#3
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос об изображениях
Воопще слишком большое число DIP способно убить производительность любого компа в ноль.
__________________
|
(Offline)
|
|
21.02.2012, 10:58
|
#4
|
AnyKey`щик
Регистрация: 03.01.2012
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос об изображениях
Уря, нашёл выход, с помощью grabimage, как облегчить работу компьютеру)
Сперва:
global map_drawned = false
global image = createimage(640,480) ;создаём пустую картинку размером с экран
затем основной цикл:
repeat
if map_drawned = false then ;тут проверка
for y = 0 to 14 ;количество
for x = 0 to 19 ;тайлов на карте (14*19)
drawimage tileset,x*40,y*40,map(x,y) ;тут, думаю, понятно, но не в этом суть.
next
next ;всё, карта нарисована
grabimage image,0,0 ;захватываем полностью изображение
map_drawned = true ;больше эти циклы выполняться не будут
endif
drawimage image,0,0 ;готовая карта рисуется одной картинкой
forever
Может вам всем это известно, но мало ли)
|
(Offline)
|
|
28.02.2012, 13:39
|
#5
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Вопрос об изображениях
Рисовать в картинку можно и вне основного цикла, тогда и флаг не понадобится.
|
(Offline)
|
|
28.02.2012, 18:18
|
#6
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопрос об изображениях
Кстати, дельта-тайминг не единственный способ. Есть и стандартный, без таймеров. Когда используешь Flip, то максимальный фпс равен частоте экрана, а если напишешь Flip(false) то вот тогда всё и будет от машины зависеть.
|
(Offline)
|
|
29.02.2012, 18:00
|
#7
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Вопрос об изображениях
Сообщение от Nikich
Кстати, дельта-тайминг не единственный способ. Есть и стандартный, без таймеров. Когда используешь Flip, то максимальный фпс равен частоте экрана, а если напишешь Flip(false) то вот тогда всё и будет от машины зависеть.
|
Это называется VSync - вертикальная синхронизация.
Смысл в том, что происходит задержка по частоте обновления монитора.
Но частота, то у всех разная.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
01.03.2012, 23:17
|
#8
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопрос об изображениях
Я и не говорил что она у всех одинаковая, но говорить автору темы о том, что зависит фпс от машины тоже не верно в данном случае.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:23.
|