DirectX 11 : simultaneous use of multiple adaptors

标签 directx direct3d11

我们需要在一台PC上驱动8到12个显示器,所有显示器都呈现单个3D场景图的不同 View ,因此必须使用多个图形卡。我们目前正在dx9上运行,因此希望移至dx11,以期使此操作变得更容易。

初步调查似乎表明,这种明显的方法行不通-除非我们从单独的流程中驱动每张卡,否则性能很差。网络搜索没有发现任何问题。有人可以建议通过dx11在单个进程中同时利用多张卡的最佳方法吗?

最佳答案

我看到您已经找到了解决方案,但是我认为最好将我自己的最新经验分享给其他遇到此问题的人...

是的,您可以从一个过程中驱动任意数量的适配器和输出。以下一些信息可能会有所帮助:

在DXGI和DX11中:

每个图形卡都是一个“适配器”。每个监视器都是一个“输出”。有关通过这些枚举的更多信息,请参见here

有了要使用的适配器的指针后,请使用D3D11CreateDevice为每个适配器创建一个设备(ID3D11Device)。也许您想要一个不同的线程来与每个设备进行交互。如果该线程可以帮助您加快处理速度,则可能具有特定的处理器关联性。

每个适配器拥有自己的设备后,为每个输出创建swap chainrender target。您还可以在输出时也为每个输出添加create your depth stencil view

创建交换链的过程将需要设置窗口:每个输出一个窗口。我认为从包含交换链的窗口驱动渲染没有太大好处。您可以仅将Windows创建为交换链的主机,然后再完全忽略它们。

对于渲染,您将需要遍历每个设备的每个输出。对于每个输出,将设备的渲染目标更改为使用OMSetRenderTargets为当前输出创建的渲染目标。同样,您可以根据需要在不同的线程上运行每个设备,因此每个线程/设备对将通过用于渲染的输出具有其自己的迭代。

在执行此过程时,以下一堆链接可能会有所帮助:

Display Different images per monitor directX 10

DXGI and 2+ full screen displays on Windows 7

http://msdn.microsoft.com/en-us/library/windows/desktop/ee417025%28v=vs.85%29.aspx#multiple_monitors

祝你好运!

关于DirectX 11 : simultaneous use of multiple adaptors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625595/

相关文章:

c++ - Direct3D 和 iPhone 加速度计矩阵

performance - 当我每帧写入单个顶点缓冲区数千次时,如何提高 Direct3D 的性能?

pixel-shader - 像素着色器实际上是做什么的?

c# - SlimDX Direct3D11 中的线框

c++ - 图形硬件上的最近邻搜索

c++ - DirectX D3DXVec3规范化未解析的外部符号

java - 如何在 Java 中使用 Opengl/DirectX

c - 当后台缓冲区像素格式设置为 DXGI_FORMAT_B8G8R8X8_UNORM 时,为什么 D3D11CreateDeviceAndSwapChain 会失败?

c++ - file_not_found 错误 - 带有 Visual Studio 2015 的 directx 工具包

c# - 获取绘制在窗口上的图像