#directx #directx-11 #sharpdx #dxgi
#directx #directx-11 #sharpdx #dxgi
Вопрос:
Я разрабатываю приложение DirectX11. Во время инициализации я перечисляю доступные графические адаптеры, как описано здесь .
Теперь для одного из наших клиентов количество доступных адаптеров равно нулю: EnumAdapters(0, amp;pAdapter)
уже возвращается DXGI_ERROR_NOT_FOUND
.
Как это возможно? Разве не всегда должен быть доступен хотя бы один графический адаптер? На компьютере установлена видеокарта с новейшими драйверами, и дисплей работает.
Примечание: Наше приложение фактически использует SharpDX, но процедура та же. Возвращается отказывающий эквивалент GetAdapterCount()
0
.
Комментарии:
1. Вы делаете это через
IDXGIFactory
или черезIDXGIFactory1
?2.
SharpDX.DXGI.Factory
который используетIDXGIFactory
внутренне. В чем разница между ними?3. Я не знаю, это странная проблема, мне было интересно, не поддерживает ли эта неисправная система более поздний интерфейс, но на самом деле просто догадываюсь. Я не понимаю, почему это не должно работать для нулевого адаптера. Вы все еще можете создать устройство на этом адаптере и отобразить ok?
4. Я даже не дошел до того, что мог бы создать устройство, поскольку нет адаптера, с которого я мог бы его создать.
5. Да, наше приложение не поддерживает XP. Я вернусь к вам, как только получу ответ. Спасибо за вашу помощь до сих пор!
Ответ №1:
Я отвечу на свой собственный вопрос:
Как оказалось, эта проблема возникла, когда наш клиент попытался запустить наше приложение в безопасном режиме из-за другой несвязанной проблемы. В безопасном режиме графический драйвер не загружается, и, следовательно, адаптеров не будет.
Комментарии:
1. 1 — это полезная информация для всех, кто сталкивается с той же проблемой.
Ответ №2:
Обратите внимание, что с Windows 8.x вы получите адаптер «Microsoft Basic Renderer» в «безопасном режиме», который по сути является WARP устаревший драйвер вывода VGA. Некоторые последствия см. В этом сообщении.