c++ - 如何将 LibVLC 中的 D3DDevice 传递为 "HWND"

标签 c++ video directx directshow libvlc

我想使用 libVCL 在我的游戏中显示视频,但是当游戏处于全屏模式时,我在使用 HWND 时遇到了问题,全屏表面与视频重叠。

不过我确实有可用的 D3DDevice 句柄,因此视频可以在游戏界面内绘制。 但我发现的只是 libvlc_media_player_set_hwnd() 而不是将视频表面传递到我的游戏表面进行绘图的方法。有什么方法/例子可以做到这一点吗?

最佳答案

LibVLC 中没有这样的函数。

我认为您需要使用视频格式回调并自己将视频缓冲区渲染为纹理。这就是我使用的方法(例如来自带有 JMonkeyEngine 的 Java)。

参见 libvlc_video_set_callbacks、libvlc_video_set_format 和 libvlc_video_set_format_callbacks。

我已经看到它可以流畅地播放全高清,但这比直接将 VLC 渲染到视频表面会消耗更多的 CPU。

关于c++ - 如何将 LibVLC 中的 D3DDevice 传递为 "HWND",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22375225/

相关文章:

javascript - 在模式关闭时暂停 YouTube 视频

delphi - Delphi中的CreateVertexDeclaration错误

c++ - 使用 C 或 C++ 制作自定义运行对话框?

c++ - 如何自定义 C++ 列表容器,使其可以容纳不同类型的结构?

video - 如何在使用 libav 将视频混合到 mp4 容器时补偿帧速率不足

java - 如何在 Java Swing 中播放视频?

c++ - 如何部署/制作 .exe/发布 Visual Studio DirectX 游戏?

c++ - 用纹理坐标重复纹理的部分

c++ - 将 SWIG 包装器与其他库链接

c++ - 编译器是否优化了默认移动构造函数?