![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Joyer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 22.1.2008 Репутация: нет Всего: нет |
Анимация больших изображений без аппаратного ускорения.
Здраствуйте! Мне нужно сделать слайд-шоу. Прошу советов, так как убил 2 недели, получив весьма посредственный результат. Мне нужно сделать показ нескольких изображений в полноэкранном режиме. Аналог – Google screensaver. При смене изображения должны присутствовать эффекты. 2 эффекта: «Fade» и «Отдаляющаяся/приближающаяся камера» Если с fade-ом я кое-как справился, наигравшись с альфаблендингом, то с эффектом приближающейся камеры – совсем плохо. Я перебрал варианты Graphics32, SpriteUtils с ассемблерной оптимизацией кода, для MMX, вариации работы с GDI, GDI plus и еще огромным количеством примеров, библиотек... Также я смотрел в сторону DirectX. Большинство мануалов это Delphi+DirectX= DelphiX Где то читал, что DelphiX вообще не поддерживает аппаратного ускорения. Для работы с «чистым» DirectX маловато опыта + ВСЕ примеры, которые я успел рассмотреть, глючили в Висте. Самое интересное в том, что в списке импортируемых функций Google screensaver, нету библиотек DirectDraw или GDIplus - только gdi32.dll. При этом во время режима предпростмотра (настройки экрана) этот скринсейвер нагружает проц не более чем на 7-10%!!! В то время как моя программа при прорисовке эффекта в по циклу или по таймеру пожирает все доступное процессорное время. Возможна ли реализация этих эффектов с изображениями размером с современный экран, без аппаратного ускорения? Может я просто чего-то не знаю? Заранее благодарен всем, кто потратил время на любую помощь в моем вопросе. Дмитрий. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Joyer, ну можно попробовать отказаться от операций с плавающей точкой или заюзать SSE, SSE2. Но главное оптимизировать алгоритмы. Например каждый последующий кадр делать из предыдущего при уменьшении изображений.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
А OpenGL пробовал?
|
|||
|
||||
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
в принципе возможно. Нужно не только делать все это в цикле, нужно ограничивать ФПС. дайте примерный код... |
|||
|
||||
| Joyer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 22.1.2008 Репутация: нет Всего: нет |
1. Всем спасибо за ответы.
2. Я таки оставил идею с анимацией без аппаратного ускорения, ввиду нерациональности. В рассматриваемом мною примере DirectX не вызывается статически, поэтому ее нет в списке импортируемых функций. Это происходит динамически. Сейчас все работает замечательно. Использую Direct3D интерфейс, два спрайта, две текстуры. Единственное неудобство в, том, что в полноэкранном режиме поверх Direct3D нельзя выводить другие окна. Если у кого то из начинающих возникнут вопросы по DirectX, - рад помочь. Я сам очень признателен Александру Скунову огромную помощь в данном вопросе. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |