Я работаю над продуктом, который использует DirectX для рендеринга более интенсивных изображений. До сих пор, зная, что некоторые компьютеры имеют несколько графических процессоров, я выбирал графический процессор для рендеринга, находя тот, который имеет самый большой адаптерный объем, используя следующий метод:
Код: Выделить всё
using ( ManagementObjectSearcher searcher = new ManagementObjectSearcher( "select * from Win32_VideoController" ) ) {
foreach ( ManagementObject mo in searcher.Get() ) {
var adapterRam = mo.Properties[ "AdapterRAM" ].Value;
//Use this one if it is the largest
}
}
Некоторые пользователи столкнулись с проблемой, когда у них есть встроенная видеокарта Intel, которая лжет о том, сколько у нее адаптерной памяти, и поэтому она выбирается. Я думаю, что он сообщает о некотором объеме выделенной системной оперативной памяти. Операция рисования оказывается слишком интенсивной для этой карты и приводит к сбою видеодрайверов. В компьютере имеется вполне работоспособная карта Nvidia, которая должна была быть выбрана.
Я думаю, что хороший способ обойти эту проблему — никогда не выбирать интегрированную карту вместо установленной, но мне пока не удалось найти способ программно выяснить, интегрирована ли карта.
Есть ли какой-нибудь способ определить, интегрирована ли карта или установлена?
Есть ли лучший способ выбрать лучший графический процессор?