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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Direct3D9 + DirectShow, Видеофайл в качестве текстуры... 
:(
    Опции темы
Kesh
Дата 23.5.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



Всем здрям...

Вот возник такой вопрос... Пишу приложение, работающее с Direct3D9 но только в 2D... Т.е. использую полигоны, как спрайты...
Не пинайте ногами, мне так удобнее...

Так вот возник вопросец... Мне нужно, чтобы все спрацты располагались поверх фонового спрайта, а на фоновом спрайте в качестве текстуры проигрывался видеофайл...
Видео очень хочется получать из DirectShow, ибо он проигрывает гораздо больше, чем просто VFW...

Работать я хочу все это заставить так... Приложение работает само по себе... А в это время, в отдельном потоке средствами DirectShow готовятся текстуры для фонового спрайта, и по мере готовности подгружаются в основной цикл рендеринга...

Подскажите, может кто знает, как это реализовать - загонять изображения, полученные DirectShow в Direct3DTexture9...

Заранее спасибо... 


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
p0s0l
Дата 23.5.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



http://www.clootie.ru/delphi/download_custom.html
Мотай там в самый низ ("DirectShow examples")

На компе видяха допотопная, проверить не смог, но судя по описанию там есть, то что тебе нужно:
Цитата(readme.txt)

 *-----------------------------------------------------------------------------*
 *  This sample is modified Texture3D sample from DirectX8 SDK, what uses      *
 *  DirectShow for playing AVI and Direct3D8 for displaying it simultaneusly.  *
 *  DMO filter model used in DirectShow part of example. So example shows how  *
 *  to use helper class from DMOimpl (included in DirectShow.pas) in Delphi.   *
 *  Note: DMO - DirectX Media Objects                                          *
 *                                                                             *
 *  Also this sample shows how to use destination alpha to create transition   *
 *  effects what can be encoded in alpha-layer of image                        *
 *  (plasma.dds image is copyrighted by ATi technologies)                      *
 *-----------------------------------------------------------------------------*

 


--------------------
С уважением, г-н Посол.
PM   Вверх
Kesh
Дата 23.5.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



p0s0l, а разобраться поможешь?.. smile 


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
p0s0l
Дата 24.5.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата(Kesh @  23.5.2006,  22:34 Найти цитируемый пост)
p0s0l, а разобраться поможешь?..  
Не знаю smile, наворочено там как-то...
Я в DirectShow пробовал только самые азы... Для начала я бы сделал так:
Source -> Splitter -> Decoder -> SampleGrabber -> NullRenderer

В SampleGrabber'е получаешь распакованную картинку, ее нужно загнать в текстуру (по ходу дела копированием области памяти, только форматы должны совпадать... может как-то можно автоматом в текстуру загонять ? было бы круто...)...

Цитата(Kesh @  23.5.2006,  15:20 Найти цитируемый пост)
Приложение работает само по себе... А в это время, в отдельном потоке средствами DirectShow готовятся текстуры для фонового спрайта, и по мере готовности подгружаются в основной цикл рендеринга...
Так и получится, насколько я знаю, DirectShow создает отдельные потоки для каждого графа и фильтра. Когда очередной кадр будет готов, SampleGrabber вызовет Callback-функцию, в который ты получешь распакованный кадр...

Еще вариант - написать свой фильтр, который бы стоял сразу после Decoder'а (т.е. NullRenderer и SampleGrabber уже не нужны), и при получении данных загонял их в Direct3D-текстуру... Может уже есть такой фильтр ?... 


--------------------
С уважением, г-н Посол.
PM   Вверх
Kesh
Дата 24.5.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



Цитата(p0s0l @  24.5.2006,  17:44 Найти цитируемый пост)
Не знаю smile, наворочено там как-то...

Да вот и я про то же...
 


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
p0s0l
Дата 28.5.2006, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Кстати, VMR9 может рендерить в IDirect3DSurface9... Можно задать одинаковые форматы сурфейса (через IVMRSurfaceAllocatorNotify9) и твоей текстуры, потом через LockRect перекидивать данные из сурфейса в 0-й уровень текстуры...
Но интереснее следующее - судя по MSDN, для VMR9 можно задать свой собственный (Application-defined) Surface Allocator... Тогда в Allocator'е можно было бы создать D3D9-текстуру, получить у нее GetSurfaceLevel(0). После этого теоретически VMR9 должно рендерить в этот сурфейс... Правда теоретически smile, по почему бы не попробовать ?...

Вобщем, советую порыть в направлении фильтра Video Mixing Renderer 9...
 


--------------------
С уважением, г-н Посол.
PM   Вверх
Kesh
Дата 29.5.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



p0s0l, сдается мне, что в демках DSPack так и делается... smile
Ладно... буду рыть дальше... Пока что-то не особо получается... 


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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