|
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
|
|||||||||||
Каким способом лучше всего и быстрее выводить анимацию?13.10.2016, 11:27. Показов 1707. Ответов 9
Метки builder, cbuilder, componentcount, components, doublebuffered, doublebuffered в цикле, dynamic_cast, parentdoublebuffered, twincontrol, вывод кадров, вывод картинок, вывод спрайтов, рисование, цикл по компонентам, цикл по контролам (Все метки)
обычно делаю таким вот способом
но хотелось бы вот это всё сделать как то подругому вообще в корне. потому что анимаций разных много и друг на друга их каждый раз накладывать слишком затратно для ресурсов компа... подскажите ведь должен быть другой способ?
0
|
|||||||||||
| 13.10.2016, 11:27 | |
|
Ответы с готовыми решениями:
9
Каким способом лучше визуализировать задачу?
Каким способом лучше нарисовать подобную стрелу на QGraphicsScene |
|
|
|
| 13.10.2016, 13:54 | |
|
Компоненты TBitmap/TJPEGImage/TGIFImage/TPngImage - они предназначены для загрузки, хранения и конвертации разных форматов. А выводят они одинаково, на имеющемся API системы, под виндою всё будет через битмап.
Добавлено через 19 секунд А где у вас тут "анимация"-то?
0
|
|
|
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
|
|
| 13.10.2016, 16:18 [ТС] | |
|
Ну раскадрованая анимация... Выводится на канву через таймер. Я хотел узнать как правильно делать это по стандартам потому что если много анимаций все лагает а ФПС как в играх не имеет никакого значения в таком случае. Я думаю что должно быть как то так:
Сначало на масив инт задний фон (рисунок)накладываются цифры с других спрайтов. В бмп там же вроде на 1 пиксель 3 байта и потом приведение типа из инт в битмап и на канву полное изображение т.к. накладывать по 100 раз друг на друга дольше будет а так он в уме посчитает... Ну по крайней мере обработчиков меньше будет задействовано. Но может быть это велосипед и уже все придумано проще. Ну библиотека например какая-то... Желательно с примером пож
0
|
|
|
|
|||||||||||
| 13.10.2016, 17:57 | |||||||||||
|
Варианта два:
Сколько у вас одновременно элементов/картинок/фрагментов на экране? Добавлено через 2 минуты Общая рекомендация Добавлено через 5 минут Версия Builder?
Добавлено через 6 минут У каждого потомка TWinControl есть DoubleBuffered. А если версия Builder старая (у формы нету свойства ParentDoubleBuffered) - можно задать всем в цикле:
Не поможет - тогда показывайте полностью как сейчас делаете.
0
|
|||||||||||
|
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
|
|
| 13.10.2016, 20:28 [ТС] | |
|
Двойной буфер использую. Но возможно не понимаю что он даёт именно. Как я понимал для того чтобы изображение не "мерцало" . задавал в инспекторе да. Рад студия 10 у меня привык к ней.
Важный вопрос: мой вариант при выводе изображения на экран использует видеопамять? То что изображение хранится-обрабатывается не в видео памяти сильно сказывается на производительности? У меня к примеру листья шевелятся, но поверх ещё может другая анимация быть и почему то мне кажется что на этом можно как то секаномить. У меня сначало рисуется задний фон. А другие объекты которые по нему проходят на имэйдже другой канвы. И выходит что у меня куча имейджей друг на друге чтобы не отрисовывать каждый раз весь экран целиком. я стираю предыдущую анимацию и рисую новую координатами. А стираю анимацию прозрачным цветом. У меня есть заставка в которой 120 полноэкранных кадров. Так вот она жутко тормозит. Может быть дело в видеопамяти... Добавлено через 11 минут Можно пример пожалуйста как загрузить и вывести на экран изображение с опенжл или директор? Добавлено через 6 минут Ну у меня нетбук просто бомжовский. Но всеравно не должно быть такого я считаю. А вот что именно почему я могу только догадываться
0
|
|
|
|
||||||
| 13.10.2016, 21:08 | ||||||
|
VCL на GDI, то есть в обычной оперативке, на ЦП.
На нетбуке скорее всего с видеопамятью будет не лучше. Я ж не вижу "какого". Ну дак если такую заготовку использовать - как что будет?:
0
|
||||||
|
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
|
||||||||||||||||
| 14.10.2016, 09:47 [ТС] | ||||||||||||||||
|
BOGG ART, ну я в ваш код попробовал... вот мой
и ещё я у вас заметил что есть вот это:
дабл буфер кстати тоже не влияет на фпс... но этот лок унлок мне вот напомнил одну вещь... что как раз таки куча имейджей плохая идея... и лучше весь экран каждый раз перерисовывать поновой чем что то стирать на других эмейджах.. я просто писал очень давно игру и хотелось бы исключить косяки с которыми я могу столкнуться в новой игре (тут я планирую намного больше анимации) Добавлено через 3 минуты хотя впринципе если как то этим лок унлоком подстаканить с другими имейджами то может быть не будет такого снижения фпс... но вот он только автоматически выполняется и вообще никак не реагирует программа на его присутствие у меня... к примеру я ставлю и ничего не происходит
спасибо. это меня натолкнуло на пару мыслей хороших которые решили мой вопрос... но было бы идеально если бы ещё попробовать тоже самое с директом\опенжл Добавлено через 2 часа 49 минут сейчас чот смотрю директ обучение какие то треугольники нарисованы 4000 фпс но какой именно сдк и как его в рад студию я ещё пока непонял, и какой код там должен быть незнаю
0
|
||||||||||||||||
|
|
|
| 14.10.2016, 15:06 | |
|
Рисовать надо в FormPaint. Timer нужен только один, а interval можно ставить не меньше 50.
И как просто вопрос - какие ещё "4000 фпс", когда мониторы стока физически не способны выводить? Особенно на старом нетбуке. А глаза человеческие тоже "снимают кадры" намного реже.
0
|
|
|
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
|
|
| 14.10.2016, 16:24 [ТС] | |
|
не ну выполнять функцию вывода ему от этого ничего не мешает
понятное дело что ограничение есть у вышестоящих функций и они определяют когда показывается картинка а когда ждёт своей очереди.... но дело в производительности... я вот на нет буке столкнулся в прошлой игре с проблемой того что у меня оперативная память просто закончилась и всё... а там была и локальная сеть и огромная карта с искуственным интелектом. а хочется чтобы мои игры запускались на всем даже на доисторическом нетбуке. вот я сейчас ещё скачиваю что то, но похоже на вижуал студию придется переходить если я разберусь с директиксом. на ней как то попроще с инфой по этому поводу
0
|
|
|
|
|
| 14.10.2016, 19:39 | |
Сообщение было отмечено lips как решение
Решение
Любая операция тратит как минимум время. Поэтому не надо гоняться за мифическим ФПС, а выводить только тогда когда это реально надо. "На экране ничего не изменилось, но мы всё равно обновим неменявшийся кадр 146 раз" - нафига?
![]() В современных играх потипу "Марио" этот ФПС не выше 12 - и никто не жаловался, всё нормально анимируется.
0
|
|
| 14.10.2016, 19:39 | |
|
Помогаю со студенческими работами здесь
10
Каким способом лучше подключать внешние скрипты/библиотеки? Каким способом лучше разить строку: через регулярки или сплитом? Как лучше всего выводить инфу из бд? Каким лучше всего делать сайт? Каким сервис лучше всего воспользоватся для прогон Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|