2016-07-11 2 views
0

Mon système a deux cartes graphiques installées: un Quadro FX 1500, qui prend en charge DirectX 9, et un Quadro 600, qui supporte jusqu'à DirectX 11. J'écris une application C# (en utilisant la bibliothèque wrapper SharpDX) contre DirectX 11, donc je veux m'assurer que je choisis toujours le Quadro 600 comme mon appareil. DirectX 11 sélectionnera-t-il par défaut la carte de périphérique/carte graphique correcte ou, dans le cas contraire, est-il possible d'énumérer les périphériques de mon système et de choisir celui qui prend en charge DirectX 11?Comment choisir un périphérique graphique spécifique dans SharpDX/DirectX 11?

En ce moment mon code d'initialisation de l'appareil ressemble à ceci:

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

Merci!

+0

J'ai confirmé que le périphérique utilise le jeu de fonctionnalités 9.3 (via 'SharpDX.Direct3D11.Device.GetSupportedFeatureLevel()'), donc le périphérique par défaut doit être le FX 1500. Cependant, je ne sais pas encore comment corriger cela. – artisticdude

+0

Oui, mais vous pouvez le faire via DXGI, pas DirectX, regardez ici: https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx sous "Énumérer les adaptateurs" –

Répondre

0

Pour créer un périphérique pour un adaptateur spécifique, vous devez le passer en argument dans le constructeur de périphérique.

d'abord obtenir l'index de l'appareil que vous avez besoin:

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); 

Pour trouver l'adaptateur à droite, vous pouvez boucle fonction getAdapter, et l'utilisation Description de trouver celui qui vous convient.

Veuillez noter que vous ne devez pas utiliser l'indicateur Matériel si vous spécifiez un périphérique manuellement. BgraSupport est une pratique courante.