|
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
|
|||||||||||
Каким способом лучше всего и быстрее выводить анимацию?13.10.2016, 11:27. Показов 1692. Ответов 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
Каким способом лучше подключать внешние скрипты/библиотеки? Каким способом лучше разить строку: через регулярки или сплитом? Как лучше всего выводить инфу из бд? Каким лучше всего делать сайт? Каким сервис лучше всего воспользоватся для прогон Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|