Вопрос об изображениях
Буду краток, дело обстоит так:
С помощью цикла и вложенного в него цикла я рисую тайловую карту. После этого поверх неё я рисую изображение персонажа в координатах X и Y. Используя backbuffer я постоянно выполняю cls и flip, после чего снова перерисовывается тайловая карта (порядка двухсот тайлов) и изображение персонажа, с изменившимися координатами. Сколько там фпс в блитце, 60? Отсюда выходит 60*кол-во тайлов на карте = 12000 операций в секунду. Если экран не очищать и перемещать персонажа, то будет куча одинаковых картинок персонажа на экране. Однако, не трудно ли компьютеру перерисовывать заново тайловую карту после cls? Можно ли один раз нарисовать полностью карту и лишь изменять положение персонажа на ней? |
Ответ: Вопрос об изображениях
Фпс в Blitz не зафиксирован и зависит от мощности компьютера.
Чтоб его ограничить, (например до 60) нужно что-то вроде дельтатайминга (гуглить по форуму, есть много тем). Обычно он достигает больших значений. Вообще компьютеру не трудно. В любой видео-игре происходит постоянное выполнение тысяч операций в секунду. На то они и "видео"-игры. Кстати, если перерисовывается так и так весь экран (сначала трава, потом гг, потом гуи), то и cls в начале цикла не обязателен вроде. |
Ответ: Вопрос об изображениях
Воопще слишком большое число DIP способно убить производительность любого компа в ноль.
|
Ответ: Вопрос об изображениях
Уря, нашёл выход, с помощью 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 Может вам всем это известно, но мало ли) |
Ответ: Вопрос об изображениях
Рисовать в картинку можно и вне основного цикла, тогда и флаг не понадобится.
|
Ответ: Вопрос об изображениях
Кстати, дельта-тайминг не единственный способ. Есть и стандартный, без таймеров. Когда используешь Flip, то максимальный фпс равен частоте экрана, а если напишешь Flip(false) то вот тогда всё и будет от машины зависеть.
|
Ответ: Вопрос об изображениях
Цитата:
Смысл в том, что происходит задержка по частоте обновления монитора. Но частота, то у всех разная. |
Ответ: Вопрос об изображениях
Я и не говорил что она у всех одинаковая, но говорить автору темы о том, что зависит фпс от машины тоже не верно в данном случае.
|
Часовой пояс GMT +4, время: 11:50. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot