Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анимация больших изображений без аппаратного ускор 
V
    Опции темы
Joyer
Дата 7.8.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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%!!! В то время как моя программа при прорисовке эффекта в по циклу или по таймеру пожирает все доступное процессорное время.
Возможна ли реализация этих эффектов с изображениями размером с современный экран, без аппаратного ускорения?
Может я просто чего-то не знаю?
 smile 
Заранее благодарен всем, кто потратил время на любую помощь в моем вопросе.
Дмитрий.

PM MAIL   Вверх
Alexeis
Дата 7.8.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Joyer, ну можно попробовать отказаться от операций с плавающей точкой или заюзать SSE, SSE2. Но главное оптимизировать алгоритмы. Например каждый последующий кадр делать из предыдущего при уменьшении изображений. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
TDM
Дата 24.9.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.2.2006
Где: SPB

Репутация: нет
Всего: нет



А OpenGL пробовал?
PM MAIL ICQ   Вверх
AntonN
Дата 24.9.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



Цитата

В то время как моя программа при прорисовке эффекта в по циклу или по таймеру пожирает все доступное процессорное время.
Возможна ли реализация этих эффектов с изображениями размером с современный экран, без аппаратного ускорения?
Может я просто чего-то не знаю?

в принципе возможно. Нужно не только делать все это в цикле, нужно ограничивать ФПС.
дайте примерный код...


--------------------
user posted image
PM MAIL WWW   Вверх
Joyer
Дата 24.9.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 22.1.2008

Репутация: нет
Всего: нет



1. Всем спасибо за ответы.
2. Я таки оставил идею с анимацией без аппаратного ускорения, ввиду нерациональности.
В рассматриваемом мною примере DirectX не вызывается статически, поэтому ее нет в списке
импортируемых функций. Это происходит динамически.

Сейчас все работает замечательно. Использую Direct3D интерфейс, два спрайта, две текстуры.
Единственное неудобство в, том, что в полноэкранном режиме поверх Direct3D  нельзя выводить
другие окна.

Если у кого то из начинающих возникнут вопросы по DirectX, - рад помочь. smile  smile 

Я сам очень признателен Александру Скунову огромную помощь в данном вопросе.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.1854 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.