![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
Всем здрям...
Вот возник такой вопрос... Пишу приложение, работающее с Direct3D9 но только в 2D... Т.е. использую полигоны, как спрайты... Не пинайте ногами, мне так удобнее... Так вот возник вопросец... Мне нужно, чтобы все спрацты располагались поверх фонового спрайта, а на фоновом спрайте в качестве текстуры проигрывался видеофайл... Видео очень хочется получать из DirectShow, ибо он проигрывает гораздо больше, чем просто VFW... Работать я хочу все это заставить так... Приложение работает само по себе... А в это время, в отдельном потоке средствами DirectShow готовятся текстуры для фонового спрайта, и по мере готовности подгружаются в основной цикл рендеринга... Подскажите, может кто знает, как это реализовать - загонять изображения, полученные DirectShow в Direct3DTexture9... Заранее спасибо... -------------------- ![]() |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
http://www.clootie.ru/delphi/download_custom.html
Мотай там в самый низ ("DirectShow examples") На компе видяха допотопная, проверить не смог, но судя по описанию там есть, то что тебе нужно:
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
p0s0l, а разобраться поможешь?..
-------------------- ![]() |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Не знаю
Я в DirectShow пробовал только самые азы... Для начала я бы сделал так: Source -> Splitter -> Decoder -> SampleGrabber -> NullRenderer В SampleGrabber'е получаешь распакованную картинку, ее нужно загнать в текстуру (по ходу дела копированием области памяти, только форматы должны совпадать... может как-то можно автоматом в текстуру загонять ? было бы круто...)... Так и получится, насколько я знаю, DirectShow создает отдельные потоки для каждого графа и фильтра. Когда очередной кадр будет готов, SampleGrabber вызовет Callback-функцию, в который ты получешь распакованный кадр... Еще вариант - написать свой фильтр, который бы стоял сразу после Decoder'а (т.е. NullRenderer и SampleGrabber уже не нужны), и при получении данных загонял их в Direct3D-текстуру... Может уже есть такой фильтр ?... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
-------------------- ![]() |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 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 должно рендерить в этот сурфейс... Правда теоретически Вобщем, советую порыть в направлении фильтра Video Mixing Renderer 9... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
p0s0l, сдается мне, что в демках DSPack так и делается...
Ладно... буду рыть дальше... Пока что-то не особо получается... -------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |