我想使用 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/