我仍在尝试使用带有 libvlc 的 directx api 在 firemonkey 上播放视频!我已经用不同的方式播放了视频,但我想在 Directx 表面上播放视频。
请先看这个链接:http: //forum.videolan.org/viewtopic.php?f=32 &t=82618
有人写了一个关于如何在directx上使用libvlc的delphi代码,并且该代码运行良好,但该代码是纯directx代码。我想将此代码集成到firemonkey!我怎么能用firemonkey库来做到这一点(我知道windows firemonkey也使用directx库,但是firemonkey库(接口、类、对象)的命名和使用与directx完全不同!
我现在在哪里:
我几乎使用“Winapi.Direct3D9,Winapi.D3DX9,FMX.Context.DX9”库将这个纯directx代码集成到firemonkey
我可以在 firemonkey 上下文中访问 IDirect3DDevice9 对象!
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 画布?
我正在等待好的德尔福开发者解决方案。
谢谢