Я все еще пытаюсь воспроизвести видео на firemonkey, используя DirectX API с libvlc!Я уже воспроизводил видео, используя другой способ, но я хочу воспроизводить видео на DirectX Surface.
, пожалуйста, сначала посмотрел эту ссылку: http://forum.videolan.org/viewtopic.php?f=32&t=82618
кто-то пишет код Delphi о том, как использовать libvlcна DirectX и этот код работает хорошо, но этот код чистый код DirectX.Я хочу интегрировать этот код в firemonkey!Как я могу сделать это с библиотекой FireMonkey (я знаю, что для Windows FireMonkey также используется библиотека DirectX, но библиотеки FireMonkey (интерфейсы, классы, объекты) именуют и используют настолько разные, чем DirectX!
Где я сейчас нахожусь:
Я почти интегрировал этот чистый код Directx в firemonkey, используя библиотеки "Winapi.Direct3D9, Winapi.D3DX9, FMX.Context.DX9"
Я могу получить доступ к объекту IDirect3DDevice9 в контексте firemonkey!
var
Device: IDirect3DDevice9;
begin
Device := TCustomDirectXContext(TCustomForm3D(ParentForm).Context).Device;
Device.CreateTexture(video_width, video_height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, vlcVideoTexture, nil);
Device.CreateTexture(video_width, video_height, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, vlcMemoryTexture, nil);
end;
Этот код в здесь полностью работает в firemonkey, но вы увидите, что результирующим объектом этого типа кода является IDirect3DTexture9, этот объект содержит кадровый буфер видео, мне просто нужно визуализировать этот объект нанекоторый контроль в форме firemonkey.
Как я могу нарисовать этот буфер на холсте firemonkey?
Я жду хороших решений для разработчиков Delphi.
Спасибо