2016-07-11 2 views
0

В моей системе установлены две графические карты: Quadro FX 1500, поддерживающий DirectX 9 и Quadro 600, поддерживающий до DirectX 11. Я пишу приложение C# (используя библиотеку обложек SharpDX) против DirectX 11, поэтому я хочу убедиться, что я всегда выбираю Quadro 600 в качестве своего устройства. Будет ли DirectX 11 выбирать правильное устройство/графическую карту по умолчанию, или если нет, есть ли способ перечислить устройства в моей системе и выбрать тот, который поддерживает DirectX 11?Как выбрать конкретное графическое устройство в SharpDX/DirectX 11?

Сейчас мое устройство код инициализации выглядит следующим образом:

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

Спасибо!

+0

Я подтвердил, что устройство использует набор функций 9.3 (через «SharpDX.Direct3D11.Device.GetSupportedFeatureLevel()»), поэтому устройство по умолчанию должно быть FX 1500. Тем не менее, вы не знаете, как исправить это. – artisticdude

+0

Да, но вы можете сделать это через DXGI, а не DirectX, посмотрите здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx под «Перечислить адаптеры» –

ответ

0

Чтобы создать устройство для конкретного адаптера, необходимо передать его в качестве аргумента в конструктор устройства.

Сначала получите индекс устройства, что вам нужно:

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

Чтобы найти правильный адаптер, вы можете функции GetAdapter цикла и использование Описание, чтобы найти тот, который вам нужен.

Обратите внимание, что вы не должны использовать флаг «Оборудование», если вы укажете устройство вручную. BgraSupport - обычная практика.

Смежные вопросы