具有两个视频适配器的笔记本电脑上的DirectX游戏,而错误的一个连接了输出

时间:2019-01-28 02:57:55

标签: c++ directx directx-11

我在使用带有两个视频卡的笔记本电脑上开发的DirectX 11游戏时遇到问题。我遇到的正常情况(并且我在自己的笔记本电脑上有)是弱的英特尔卡和功能强大的nvidia卡。显然,我想要nvidia,并且已经有了枚举适配器并找出正确的适配器来为其创建设备接口的地方。

问题是nvidia没有输出。当您在IDXGIAdapter接口上调用EnumOutputs时,找不到任何内容。这是有道理的,因为笔记本电脑只有一个屏幕并将其连接到intel适配器(您可以通过在intel IDXGIAdapter接口上调用EnumOutputs找到它。)

但这似乎无法为该设备创建全屏交换链(在给定nvidia设备和全屏设置的情况下,IDXGIFactory :: CreateSwapChain也会失败,即使我确定其他模式参数都有效)。

其他游戏似乎正在寻找解决方法。例如,《半条命2》似乎不在全屏模式下运行。但是,星露山谷正在无边界窗口模式下运行,我可以这样做,但是有它自己的问题。

我知道可以更改笔记本电脑的设置,因此nvidia卡是主要的设置。但是我需要这样做才能在客户的笔记本电脑上工作,而我不能指望他们能处理所有这些事情。

一个可能的解决方案可能是为两个适配器都创建一个设备,然后在Intel一个适配器上创建一个交换链,作为设备共享资源https://docs.microsoft.com/en-us/windows/desktop/api/d3d11/nf-d3d11-id3d11device-opensharedresource,但我什至不确定是否可行。这些文档含糊不清。

在我陷入困境之前,尽管我想知道是否有人知道解决方案。

0 个答案:

没有答案