sulion
-
Постов
20 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные sulion
-
-
В 14.03.2024 в 22:12, krapotkin сказал:
Canvas.DrawBitmap() на PaintBox
Благодарю! Почитаю
Решение уважаемого Slym у меня дает 70+ fps без перестановки порядка и 30+ fps с перестановкой при объеме занимаемой памяти 56 МБ на 1000 персонажей
Какой выигрыш по fps и памяти вы ожидаете по вашей технологии?
-
Не написал тогда, чем закончилось - восполняю
Спасибо за советы - помогло. Насыпал тогда bpl-файликов, начиная с того что выше - это и решило проблемку
-
Друзья, привет!
Как можно радикально поднять скорость отображения картинки?
Код и исполняемый файл прикладываю. У меня пока выдает в районе 10-15 fps, больше получить не удается
Как пользоваться:
1. Запускаем
2. Вводим 100
3. Смотрим на цифру сверху - там будет, какой fps выдает программа
Контекст вопроса
Перед вами - тест-бенчмарк, по которому я определяю, какими инструментами пользоваться
LoadFromStream. Перешел на потоки - это дало ускорение в несколько раз: раз в пять ускорил переход от LoadFromFile к LoadFromStream - это прямо повлияло на fps. Раза в два ускорил переход от каталога с файлами к zip-архиву, это скорее про время загрузки.
BeginScene. Читал на этом форуме, что он дает некоторое ускорение
BringToFront. Персонажам в будущем предстоит входить в дома и обходить деревья, для таких операций в RAD Studio предусмотреть BringToFront/SendToBack, т.е. понадобится перестраивать поштучно Z-порядок, когда кто-то кого-то загородил. Соответственно, в вызовем разок. По моим наблюдениям - если закомментарить эту строчку, то fps увеличивается вдвое. Т.е. если на этих инструментах написать игру, то она будет идти плавно, но когда одна-единственная деталь поменяет Z-порядок, то игра вдвое снизит fps а потом возобновит плавность. Рывок будет заметный
Что ещё можно предпринять, чтобы поднять fps?
-
Да, но Architect 10.3.1 Trial я тоже ставил, и там тоже не было этого компонента
@Tumaso , уточните пожалуйста, у вас какая из версий 10.2.3 ?
-
Спасибо на скрине показал как набираю этот компонент чтобы дропнуть его на форму - и нет его
Гуглить его в яндексе пробовал и не нашёл ни вчера ни сегодня, на сайте docwiki.embarcadero.com все странички предполагают что "ну типа он у вас уже есть"
Где его можно взять?
-
Коллеги, добрый день!
Вопрос на засыпку - помогите пожалуйста, чего мне не хватает для успешного запуска?
Список dll файликов прикрепляю внизу письма, Oracle 12.2 клиент стоит, PL/SQL Developer 12 использую каждый день
Симптомы:
Из хорошего - FireDAC Explorer успешно видит все нужные мне БД - и таблицы, и пакеты и т.д.
В Delphi XE7 приложение работало успешно. Delphi 10.2.3 подчёркивает два модуля. Если эти два модуля закомментарить, то - компилирует успешно, но не может подцепиться ни к одной БД Oracle
Создал пустое приложение, в него положил TFDConnection, драйвер Oracle он не видит
Что уже пробовал:
Вчера поставил все dll. Сегодня поставил Delphi 10.3.1 Architect Trial (на месяц), в нём проблема воспроизводится. Ещё раз переустановил драйвер Oracle.
Что ещё можно сделать?
Обещанный список dll:
oci.dll
ocijdbc12.dll
ocijdbc12.sym
ociw32.dll
ociw32.sym
ojdbc8.jar
oramysql12.dll
oramysql12.sym
orannzsbb12.dll
orannzsbb12.sym
oraocci12.dll
oraocci12.sym
oraocci12d.dll
oraocci12d.sym
oraociei12.dll
oraociei12.sym
oraons.dll
orasql12.dll
orasql12.sym -
Ага, сработало! Спасибо!
Кроме масштабирования мне ещё понадобится два действия:
* сдвиг картинки в bitmap
* совмещение нескольких (например, двух) битмапов на одном
И, пожалуй, всё - остальное могу
-
Друзья, возникла необходимость большое количество картинок подравнивать (сдвигать изображение вправо-влево, масштабировать и затем сохранять).
Помогите пожалуйста правильно воспользоваться DrawBitmap
Проект:drawbitmap.7z
-
-
TLDR: Откуда из файлов игры лучше загружать большое количество картинок?
Доброе утро, коллеги!
Я собираюсь приступить к написанию спрайтовой игры (в основном под Windows, в перспективе возможна сильно урезанная версия для Android)
Соответственно, подбираю три вещи:
1. Как хранить спрайты в файлах игры
2. Как хранить спрайты в памяти
3. Как их отображать
В прошлых игрушках файлики лежали кучей в поддиректориях, и оттуда подбирались TImage.Bitmap.LoadFromFile
Спасибо Fire Monkey даже такое "топорное" решение выдавало честные 20 fps. Cейчас хочется сделать "как полагается"
Спрайт имеет размеры в пределах 800х600 (разный у разных персонажей), фоны от 960х540 до около 4000х540 (для платформерных мини-игр)
Спрайтов у каждого персонажа 7200, персонажей 9 - с фонами и иконками под 100 000 картинок
Спрайты персонажа разбиты по смыслу на анимации (7200 = 30 анимаций * 8 направлений * 30 кадров), то есть когда показывает анимацию то нужно только её тридцать кадров
Одновременно на экране могут быть от одного персонажа (масштаб 1-2), до тридцати (масштаб 0,05-0,25)
Спасибо за обстоятельные материалы по TImageList - как понял, лучше много картинок хранить в нём.
Если использовать объект TImageList - то скажется ли на производительности если использовать не один объект а дюжину - по одному на персонажа?
Также интересует производительность TGlyph при быстрой смене ссылки на отображаемый спрайт (нужно минимум 10 fps)
И - какие есть варианты откуда загружать эту графику?
Желательно без создания временных файлов во время загрузки (отпадает TZipFile)
Например, удастся ли мне сохранить и при следующем запуске загрузить объект TImageList со всем содержимым?
Дело для меня новое, раньше писал только маленькие игрушки для друзей, сейчас хочется сделать по уму что-то похожее на нормальную игру (хотя и с открытым кодом)
Заранее спасибо за советы!
-
Если очень хочется работать попиксельно - то можно попиксельно свести два битмапа, вызывая getPixel одного и setPixel другого.
http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.Graphics.TBitmapData
-
Здравствуйте!
Я хочу получить Trackbar с рычажком-рисунком.
Видимо, мне нужно поменять стиль HThumbBarStyle. Как добавить на него картинку? Вернее, картинку-то я добавил, но чего-то ещё не сделал, а чего - не знаю.
Подскажите, пожалуйста.
-
Хаха, да, я заметил что картинка съезжает то на пиксель, то на два - и решил проверить закономерность.
Дрожжание - как вы и сказали - решается WrapMode := Stretch
Не могу поверить, что дважды наступил на те же грабли буду шерстить форум внимательнее
-
Подскажите пожалуйста, как выровнять рисунок - хотелось бы, чтобы прямоугольный спрайт увеличивался в размерах, оставаясь по центру.
Попробовал всё что очевидно, и снова пришёл за советом.
-
Вопрос решился парой кликов мышкой: всего-то нужно быть переставить WrapMode у TImage в положение Stretch - подсмотрел в другой тебе на форуме.
Всем спасибо! Очень тронут вниманием, накинутые идеи обязательно запомню и попробую.
-
Наверное, не уверен что это, но очень красиво!
https://drive.google.com/open?id=0B67SdgYATndtc1ZKR1VmaHBURms
-
Здравствуйте!
Align стоит None
PC - это неграфический класс, там вся инфа про персонажа (его размер в метрах например - 1,71 м)
-
Здравствуйте!
Очень нравится FireMonkey, спасибо за отличный продукт.
Помогите пожалуйста вот с каким моментом: как программно поменять размер изображения TImage ?
...
Character.Bitmap.LoadFromFile( i.m[ be, bi ].g ); {спрайтик}
Character.Position.X := ( Hall.Width - Character.Width ) / 2; {стоим посредине}
Character.Position.Y := ( Hall.Height - Character.Height); {стоим на полу}
Character.Width := PC.Width * PC.Scale;
Character.Height := PC.Height * PC.Scale;
...
Проблема: вместо того чтобы отведав пирожка расти стоя на полу, персонаж не меняется в размере.
Это - кусочек кода, который по таймеру 10 раз в секунду отрисовывает персонажа. Топорно, без всяких оптимизаций (моя первая проба после TAnimationXXX). Вообще, скорость FireMonkey впечатляет - спрайт ростом с 3/4 экрана с лёгкостью меняется без морганий на очень слабом компьютере, и тики с относительно "тяжёлой" математикой не "наползают" друг на друга по времени.
Объект PC - это персонаж, там хранятся вещмешок, умения, способности и пара полей для графики (масштаб PC.Scale и размеры в метрах PC.Height, PC.Width ).
Форма запускается в полноэкранном режиме, на ней лежит TScaledLayout растянутый Align=Client на весь экран, внутри него - фоновый рисунок Hall, персонаж Character и класс-библиотека спрайтов, имена файлов рисунков доступны как i.m[].g
Скорость анимации сцены с большим количеством деталей
в Скорость анимации
Опубликовано
Доброго вечера!
Код и картинка по методу уважаемого господина Крапоткина - ниже
У меня получился такой результат:
Кол-во персонажей = 1000
| метод | fps | память |
| LoadFromFile из дерева каталогов, 1000 TImage, со сменой Z-порядка | 0 | 581 МБ | нулевая версия c 6 МБ картинок
| LoadFromStream из архива в поток, 1000 TImage, со сменой Z-порядка | 0 | 78 МБ | (c) я, первый пост в этой ветке
| LoadFromStream из архива в битмап, 1000 TImage, со сменой Z-порядка | 30 | 59 МБ | (с) Slym, 12 марта
| LoadFromStream из архива в битмап, рисуем сразу в Z-порядке на Canvas | 70 | 24 МБ | (с) Крапоткин, 16 марта
Т.о. метод уважаемого Крапоткина - самый быстрый и экономный. Выигрыш - более чем вдвое. Снимаю шляпу
Код и картинка:
fps3.zip