Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 05.02.2012, 17:15   #1
Animan2010
AnyKey`щик
 
Регистрация: 03.01.2012
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос об изображениях

Буду краток, дело обстоит так:
С помощью цикла и вложенного в него цикла я рисую тайловую карту. После этого поверх неё я рисую изображение персонажа в координатах X и Y.
Используя backbuffer я постоянно выполняю cls и flip, после чего снова перерисовывается тайловая карта (порядка двухсот тайлов) и изображение персонажа, с изменившимися координатами. Сколько там фпс в блитце, 60? Отсюда выходит 60*кол-во тайлов на карте = 12000 операций в секунду.
Если экран не очищать и перемещать персонажа, то будет куча одинаковых картинок персонажа на экране. Однако, не трудно ли компьютеру перерисовывать заново тайловую карту после cls?
Можно ли один раз нарисовать полностью карту и лишь изменять положение персонажа на ней?
(Offline)
 
Ответить с цитированием
Старый 05.02.2012, 17:29   #2
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Вопрос об изображениях

Фпс в Blitz не зафиксирован и зависит от мощности компьютера.
Чтоб его ограничить, (например до 60) нужно что-то вроде дельтатайминга (гуглить по форуму, есть много тем).
Обычно он достигает больших значений.

Вообще компьютеру не трудно. В любой видео-игре происходит постоянное выполнение тысяч операций в секунду. На то они и "видео"-игры.

Кстати, если перерисовывается так и так весь экран (сначала трава, потом гг, потом гуи), то и cls в начале цикла не обязателен вроде.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
kostya261 (24.04.2012)
Старый 05.02.2012, 17:44   #3
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Вопрос об изображениях

Воопще слишком большое число DIP способно убить производительность любого компа в ноль.
__________________
(Offline)
 
Ответить с цитированием
Старый 21.02.2012, 10:58   #4
Animan2010
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
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопрос об изображениях

Кстати, дельта-тайминг не единственный способ. Есть и стандартный, без таймеров. Когда используешь Flip, то максимальный фпс равен частоте экрана, а если напишешь Flip(false) то вот тогда всё и будет от машины зависеть.
(Offline)
 
Ответить с цитированием
Старый 29.02.2012, 18:00   #7
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Вопрос об изображениях

Сообщение от Nikich Посмотреть сообщение
Кстати, дельта-тайминг не единственный способ. Есть и стандартный, без таймеров. Когда используешь Flip, то максимальный фпс равен частоте экрана, а если напишешь Flip(false) то вот тогда всё и будет от машины зависеть.
Это называется VSync - вертикальная синхронизация.
Смысл в том, что происходит задержка по частоте обновления монитора.
Но частота, то у всех разная.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
(Online)
 
Ответить с цитированием
Старый 01.03.2012, 23:17   #8
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопрос об изображениях

Я и не говорил что она у всех одинаковая, но говорить автору темы о том, что зависит фпс от машины тоже не верно в данном случае.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com