【发布时间】:2011-11-18 19:06:33
【问题描述】:
我仍在尝试使用带有 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 完全不同!
我现在在哪里:
我几乎将这个纯 Directx 代码与“Winapi.Direct3D9、Winapi.D3DX9、FMX.Context.DX9”库一起使用到 firemonkey
我可以在 firemonkey Context 中访问 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;
here 中的代码完全在 firemonkey 中工作,但您会看到此代码类型的结果对象是 IDirect3DTexture9 ,该对象包含视频的帧缓冲区,我只需要将这个对象渲染到 firemonkey 形式的某些控件上。
如何将此缓冲区绘制到 firemonkey 画布?
我正在等待优秀的 delphi 开发人员解决方案。
谢谢
【问题讨论】:
标签: delphi directx delphi-xe firemonkey libvlc