0

我有一个应用程序可以在全屏模式下创建 Direct3D 9 设备,然后开始演示。稍后,在创建了第一个设备之后,我暂时在窗口模式下创建了一个新的 Direct3D 设备(在同一线程上,但用于不同的窗口)。我再次立即销毁此设备,但不知何故,我不再能够将 Alt-tab 退出全屏应用程序。该应用程序只是停留在顶部而不是掉到后台,尽管看起来该应用程序不再是焦点。

如果我将我的临时设备创建为 D3DDEVTYPE_NULLREF,我突然可以使用 Alt-tab 退出。有谁知道为什么会这样,如果是这样,我如何在不破坏现有设备的情况下创建第二个临时设备?

4

2 回答 2

0

创建 D3D 设备时,您指定将其绑定到哪个窗口(CreateDevice调用的第三个参数)。我可能会建议破坏第二个设备以第一个设备看不到的方式转移焦点。尝试将焦点显式返回到主窗口:

second_device->Release();
SetActiveWindow(hWnd);

顺便说一句,如果这是您进行并行渲染的方式,请考虑使用渲染目标或交换链。DX9 文档说,在设备之间切换会对性能产生重大影响。

于 2012-01-24T02:48:13.933 回答
0

创建第二台设备后,尝试重置第一台设备。MSDN 提到这是初始化多个设备的正确方法。但是我找不到关于它的文章:(

虽然我从来不需要制作全屏和窗口设备。我只尝试过两个全屏设备。

于 2013-02-21T15:40:50.687 回答