3

there is an answer about DirectX11, but DirectX9 is different.

The first parameter of IDirect3D9::CreateDevice and IDirect3D9Ex::CreateDevice is UINT Adapter, it should be a number between 0 and one less than the result of IDirect3D::GetAdapterCount

but the GetAdapterCount returns 1, even my laptop have two video cards(one is Intel HD Graphics 3000, another is AMD HD7400M)

I can get the second video card by IDXGIFactory::EnumAdapters in DirectX11, so how can i get to it in DirectX 9?

Community
  • 1
  • 1
Clones1201
  • 333
  • 3
  • 17
  • Use ``IDIrect3D::GetAdapterIdentifier`` to figure out which adapter in your system isn't enumerating, and then check those settings and drivers. – Chuck Walbourn Aug 25 '14 at 15:21
  • problem is that IDXGIFactory can enumerate all adapters correctly – Clones1201 Aug 25 '14 at 15:27
  • Yes, but it's probably a driver or driver setting that keeping the Direct3D 9 device for one of your adapters hidden. The one that doesn't show up is the one that's hiding. You can also try ``DxCapsViewer`` in the Windows 8.x SDK (included with VS 2012 or VS 2013) or the legacy DirectX SDK to see if a device shows up under "DXGI Devices" but does not show up under "Direct3D 9 Devices". Also keep in mind that Direct3D 9 concept of an adapter is slightly different than DXGI: A single physical GPU with two monitors is 2 "adapters" in Direct3D 9, but a single "adapter" with 2 outputs in DXGI. – Chuck Walbourn Aug 25 '14 at 17:42
  • is it possible that two physical GPUs with one monitor is only one "adapters"(the second GPU is hidden) in Direct3D 9? I already set "High Performance" in AMD driver control center. – Clones1201 Aug 26 '14 at 06:44
  • SLI/Crossfire rigs can be setup that way, yes. – Chuck Walbourn Aug 26 '14 at 18:09

0 Answers0