   Using two DX9 devices
  Hi,I have an upcoming project which requires a double monitor output. Each monitor will be showing different DX9 graphics.With a single gfx card, I use D3DADAPTER_DEFAULT to create the device.Firstly how do I go about referring to two gfx cards?Also, is it better to have two gfx cards or one dual head one? It wont be the most demanding 3d application ever!Thanks for your helpSimon   
Quote:Original post by sipicklesWith a single gfx card, I use D3DADAPTER_DEFAULT to create the device.Firstly how do I go about referring to two gfx cards?If you *know* there's two adapters, you can use 0 and 1 instead of D3DADAPTER_DEFAULT. The proper way to do it is to enumerate all adapters with IDirect3D9::GetAdapterCount() and IDirect3D9::GetAdapterIdentifier().Quote:Original post by sipicklesAlso, is it better to have two gfx cards or one dual head one? It wont be the most demanding 3d application ever!Define "better". Two cards mean twice the throughput. A dual-head card just means it can deal with two devices, both managed with the same card. You should be fine with a dual head card if it's fairly lightweight.   ;  Thanks Steve,I hope it will be as simple as it soundsSi   ;  What Steve said, and:- There are three typical multimonitor configurations you'll find:A) two physically separate graphics cards, potentially different cards from different vendors using different interfaces (e.g. ATI X900 in the AGP, amd an nVidia Riva TNT in the PCI). Each adapter shows up separately to Direct3D and Windows.B) an old style multihead card (or one with older drivers). The outputs appear to Direct3D and Windows to be two separate cards (as with A), though they may or may not share some hardware internally (implementation detail - you have no access in this configuration)C) new style multihead card. The outputs still show up in Windows as two separate outputs, but to Direct3D they show up as a true multihead device.For A and B, you'll need to create two separate Direct3D devices. For C, take a look at the Multihead documentation in the SDK (so I don't have to repeat it here [smile]):DirectX Graphics ->Programming Guide ->Programming Tips ->MultiheadWith true multihead (C), you can share resources between each of the outputs and so save memory. With separate devices, you'll need to duplicate resources for each output.   ;  Another little note that's hidden away in the SDK somewhere.  When attempting to create two devices, the creation of the second will cause a lost device of the first.  Simply "Create A", "Create B", "Reset A" to have both devices active.This may have been an odd DX8 thing, and may be gone in DX9.  I just thought I'd warn you ahead of time.   ;  Can anyone recommend a good multioutput gfx card for around £100, of the (C) variety defined by S1CA?Thank youSimon   ;Quote:Original post by sipicklesCan anyone recommend a good multioutput gfx card for around £100, of the (C) variety defined by S1CA?Thank youSimonPractically all Ati or NVidia cards sold today are of this variety, if they have multiple output connectors.   ;Quote:Original post by Nik02Quote:Original post by sipicklesCan anyone recommend a good multioutput gfx card for around £100, of the (C) variety defined by S1CA?Thank youSimonPractically all Ati or NVidia cards sold today are of this variety, if they have multiple output connectors.Yeah, anything from the ATI 9xxx or nVidia FX lines should support 2 devices (probably many earlier cards as well). However, make sure the card has two physical monitor outputs. My old Radeon 9200SE supported 2 devices, but only had 1 VGA out.   