Собственно как можно с помощью directX, желательно без сторонних библиотек, отрисовать видео файл(например avi), на плоскость?
желательно с примерами или хорошим алгоритмом.
Используй DirectShow. Примеры должны быть в SDK.
представляешь видео-файл ввиде последовательного набора текстур (по кардам) и на нужном материале просто меняешь текстуру.
В книге "DirectX продвинутая анимация" Джима Адамса, подробно описано.
> Примеры должны быть в SDK.
Пример DShow назывался Texture3D9 Sample. Техника заключалась в online рендеринге видеопотока в Texture3D. Он теперь deprecated и найти его можно только в старых сборках. Вру, сохранился. :) Лежит в папке: %Microsoft_SDKs_Root%\Windows\v6.1\Samples\Multimedia\DirectShow\Players\Texture3D9
> представляешь видео-файл ввиде последовательного набора текстур (по кардам) и
> на нужном материале просто меняешь текстуру.
Лучше всего предварительно нарендерить текстуры в каком нибудь редакторе и объединить их в одну Texture3D, а затем ее загружать.
XuX.programs
Если у себя не найдешь, могу выложить.
destrator
> объединить их в одну Texture3D
это ж каких размеров получица текстура!
0r@ngE
> это ж каких размеров получица текстура!
Смотря какой файл :)
destrator
выложи плиз..
0r@ngE
> это ж каких размеров получица текстура!
Обычных размеров, ширина видео х высота видео х байтнапиксель.
Кадры на ходу раскодируются и бросаются в видеопамять.
0r@ngE
> это ж каких размеров получица текстура!
нужно ж не весь файл читать. : D А по, скажем, 300 кадров. И ещё буфер дополнительный не помешает.
L
а толку? тогда проще в 2D-текстуру читать
0r@ngE
> а толку?
толку от чего? От буферизированной подгрузки видео?? : ))
а ты представляешь, сколько будет весить 5 минутное видео 1280*1024 в виде набора 2D текстур? За раз загруженных? 1 кадр будет весить 5 метров если не юзать сжатие. предположим 24 ФПС видео. 1секунда = 120 метров! 5 минут = 36 гб : ) Это конечно по-максимуму но даже если сжать , всёравно слишком много будет.
XuX.programs
DirectShow Texture3D9 Sample
Тема в архиве.