实现一个类似壁纸引擎功能。
在多显示器扩展模式下,一个视频窗口在主显示器workerw下播放,
另一个显示器没有视频窗口,却能同时播放这个视频,
看情况是通过直接渲染,大家有人知道是什么原理吗?
多显示器单视频多屏幕播放
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
11条回答 默认 最新
PhoenixRiser 2023-06-20 10:09关注获得0.60元问题酬金 TechWhizKid参考GPT回答:
- 要用DirectX或OpenGL进行视频渲染,以及Windows API来处理窗口和多显示器的相关事务。
大致方向:
获取显示器信息:先用Windows API,如
EnumDisplayMonitors和GetMonitorInfo来获取所有连接的显示器的信息。创建窗口:然后对于每个显示器,创建一个全屏窗口。可以用
CreateWindowExAPI,并设置窗口样式为WS_POPUP,同时设置窗口大小等于显示器的分辨率。然后用SetParentAPI将窗口的父窗口设置为workerw窗口。视频播放和渲染:这一步取决于你的视频播放和渲染技术。可能要用如DirectShow、FFmpeg、GStreamer等库来播放视频,并用DirectX或OpenGL来进行视频渲染。你要创建一个渲染上下文,绑定到你为每个显示器创建的窗口。然后可以将视频帧渲染到这个上下文。
复制或共享渲染上下文:至于如何让视频同时在两个显示器上播放,你要复制或共享你的渲染上下文。你可能要用像
wglShareLists这样的函数,或者你可能要直接复制你的渲染结果。
至于直接渲染,如果你指的是跨显示器直接渲染相同的内容,那么这应该是通过复制或共享渲染上下文实现的。如果你指的是不通过窗口系统直接渲染到显示器,那么这可能要更深入的系统编程知识,并且可能会受到Windows的限制。
评论 打赏 举报解决 1无用