C ++ Directx 11 нескольких видеокарт - PullRequest
3 голосов
/ 01 марта 2012

Я пишу программу на C ++, используя DirectX 11 для моей графики. В моем ноутбуке установлена ​​облегченная графическая карта Intel, которая используется для продления срока службы батареи и должна использоваться только для «облегченной» графики. У меня установлена ​​и другая, гораздо более мощная видеокарта.

Мне интересно, как указать, какую видеокарту использовать в DirectX? Есть ли способ, когда я создаю устройство, чтобы указать, какую карту использовать в моем коде?

Спасибо

Ответы [ 2 ]

2 голосов
/ 02 сентября 2012

Если ваша карта представляет собой некоторую комбинацию Intel / NVIDIA, у вас есть две опции:

-Первая установка карты NVIDIA в качестве предпочтительного устройства (в панели управления NVIDIA, управлять настройками 3D, глобальные / настройки программы, изменитьпредпочитаемый графический процессор.

Другой способ использования кода - перечисление адаптеров с помощью DXGI и попытка получить устройство с ограниченным уровнем возможностей (CreateDevice не будет работать, если он недоступен, а большинство карт Intel имеют 10,1)

http://msdn.microsoft.com/en-us/library/windows/desktop/bb174538(v=vs.85).aspx для перечисления адаптеров.

Затем попробуйте создать устройство с D3D_FEATURE_LEVEL_11_0 только для каждого адаптера, будет создан только один поддерживающий его.

0 голосов
/ 11 января 2014

У меня была похожая проблема.Я еще не пытался обновить драйверы моей видеокарты, но я сделаю это, когда снова подключу компьютер к Интернету.

Вот что я нашел и как я «решил» (иначе говоря, сфальсифицировал) мою проблему:

Симптомы:

  1. Аналогично постеру выше.
  2. У меня есть только 1 графическая карта NVDIA, которая утверждает, что поддерживает DirectX 11
  3. Когда я смотрел на нее в DirectX Caps Viewer, она поддерживала только DirectX 9.3 и ниже.

Решение:

  1. Итерация в обратном направлении через D3D_FEATURE_LEVEL, каждый раз вызывая D3D11CreateDeviceAndSwapChain ().
  2. Как только D3D11CreateDeviceAndSwapChain () сработает, вы знаете, что нашли максимальный уровень возможностей, поддерживаемый выбранной видеокартой.

Возможно, есть более красивый способ сделать это, нов чем была моя "проблема".Очевидно, было бы лучше, если бы моя карта поддерживала полную систему DX11, но это не плохая гарантия, если у пользователя есть подобные проблемы.По крайней мере, я могу программно определить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...