gpt4 book ai didi

delphi - DirectShow IVideoWindow 和全屏 - 我可以写入我的 D3D 主表面吗?

转载 作者:行者123 更新时间:2023-12-03 15:01:45 24 4
gpt4 key购买 nike

正在编写一个游戏,我想要中间有一些过场动画。在窗口模式下,DirectShow 类工作完美并且易于使用。但是当游戏全屏时,我无法让 DirectShow 显示全屏过场动画。

基本上,当我初始化 D3D 设备时,即使使用 IVideoWindow.put_Fullscreen(true),也无法显示视频。我猜测 DirectShow 无法使用 D3D 设备实现全屏显示。

因此,我尝试在过场动画播放时释放我的 D3D 设备,然后再次重新初始化它。这似乎工作得很好,但是当 DirectShow 全屏播放时,它似乎从我的应用程序的主窗口中窃取焦点,并且在完成后不会将其返回。这会导致 DirectInput 之后无法再次获取设备(给我一个“访问被拒绝”错误代码)。我在获取之前尝试过 SetForegroundWindow() ,但这并不能解决问题,所以这可能根本不是问题。

无论如何,长话短说,我想要的只是在我的 D3D 应用程序中间有一个全屏过场动画。有没有一种首选方法可以实现此目的?我可以通过将 DirectShow 输出到我的 D3D 主表面来做到这一点吗?我认为这会解决我遇到的问题。

最佳答案

您想要为视频混合渲染器 9 创建自定义分配器。这比制作您自己的渲染器过滤器要容易得多,而且它是专为 D3D 互操作而设计的。

Windows SDK 中有一个示例。我的安装在这里:

C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\vmr9\vmr9allocator

关于delphi - DirectShow IVideoWindow 和全屏 - 我可以写入我的 D3D 主表面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com