2016-07-11 23 views
0

Mein System hat zwei Grafikkarten installiert: eine Quadro FX 1500, die bis DirectX 9 unterstützt, und eine Quadro 600, die bis DirectX 11 unterstützt. Ich schreibe eine C# -Anwendung (mit der SharpDX-Wrapper-Bibliothek) gegen DirectX 11, also möchte ich sicherstellen, dass ich die Quadro 600 immer als mein Gerät wähle. Wird DirectX 11 standardmäßig die richtige Geräte-/Grafikkarte auswählen, oder wenn nicht, kann ich die Geräte auf meinem System aufzählen und diejenige auswählen, die DirectX 11 unterstützt?Wie wählt man ein bestimmtes Grafikgerät in SharpDX/DirectX 11?

Im Moment sieht mein Geräteinitialisierung Code wie folgt:

//which device do we get? 
SharpDX.Direct3D11.Device defaultDevice = new SharpDX.Direct3D11.Device(DriverType.Hardware, DeviceCreationFlags.Debug); 

Dank!

+0

Ich habe bestätigt, dass das Gerät Feature-Set 9.3 (über 'SharpDX.Direct3D11.Device.GetSupportedFeatureLevel()') verwendet, so dass das Standardgerät der FX 1500 sein muss. Immer noch nicht sicher, wie Sie das jedoch korrigieren. – artisticdude

+0

Ja, aber Sie können dies über DXGI, nicht DirectX tun, schauen Sie hier: https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx unter "Aufzählung Adapter" –

Antwort

0

Um ein Gerät für einen bestimmten Adapter zu erstellen, müssen Sie es als Argument im Gerätekonstruktor übergeben.

zuerst den Geräteindex, die Sie benötigen:

SharpDX.DXGI.Factory f = new SharpDX.DXGI.Factory1(); 
SharpDX.DXGI.Adapter a = f.GetAdapter(adapterindex); 
FeatureLevel[] levels = new FeatureLevel[] 
{ 
#if DIRECTX11_1 
    FeatureLevel.Level_11_1, 
#endif 
    FeatureLevel.Level_11_0, 
    FeatureLevel.Level_10_1, 
    FeatureLevel.Level_10_0, 
    FeatureLevel.Level_9_3 
}; 

DeviceCreationFlags flags = DeviceCreationFlags.BgraSupport; 

var dev = new Device(a, flags, levels); 

Um den richtigen Adapter zu finden, können Sie Schleife getAdapter Funktion und Nutzung Variante zu finden, die Sie brauchen.

Bitte beachten Sie, dass Sie das Hardware-Flag nicht verwenden sollten, wenn Sie ein Gerät manuell angeben. BgraSupport ist gängige Praxis.