写一个游戏,我想在中间放一些过场动画。在窗口模式下,DirectShow 类可以完美运行并且易于使用。但是当游戏全屏时,我无法让 DirectShow 显示全屏过场动画。
基本上,当我初始化 D3D 设备时,我无法显示视频,即使使用 IVideoWindow.put_Fullscreen(true)。我猜 DirectShow 不能用 D3D 设备全屏显示。
所以,我尝试在过场动画播放时释放我的 D3D 设备,然后重新初始化它。这似乎工作得很好,但是当 DirectShow 播放全屏时,它似乎从我的应用程序的主窗口中窃取了焦点,并且在完成后没有将其返回。然后导致 DirectInput 之后无法再次获取设备(给我一个“拒绝访问”错误代码)。我在获取之前尝试了 SetForegroundWindow() ,但这并不能解决它,所以这可能不是问题所在。
无论如何,长话短说,我想要的只是在我的 D3D 应用程序中间的全屏过场动画。有没有首选的方法来实现这一点?我可以通过将 DirectShow 输出到我的 D3D 主表面来做到这一点吗?我认为这将解决我遇到的问题。