Моя игра использует DirectX 10, и у меня возникла проблема, когда пользователи сообщают, что моя игра не запускается на их видеокарте. Вместо этого он предпочитает работать на встроенной плате Intel, что снижает производительность. Возможно, это связано с Windows 8. Это также может быть связано с мобильными картами.
До сих пор я создавал устройство DirectX 10 без указанного адаптера (как я видел во всех примерах / демонстрациях), чтобы DirectX мог выбрать свой собственный адаптер. Видимо, мне придется это изменить.
У меня уже есть функция, которая запускает все доступные адаптеры и выбирает тот, у которого больше всего выделенной памяти. Это прекрасно работает для исправления проблемы, но в целом ли это правильно?
К сожалению, я не могу полагаться на то, что на карте есть допустимый выходной видеосигнал (т. Е. Подключен монитор), поскольку машины, затронутые этой проблемой, не сообщают о выводах для нужной карты.
Какой алгоритм я могу использовать, чтобы правильно выбрать, какой адаптер использовать с DirectX?
Ответы:
Выбор адаптера с наивысшей доступной выделенной памятью может работать во многих случаях, но в некоторых случаях графический процессор с меньшей вычислительной мощностью может иметь больше выделенной памяти, и ваша игра все равно будет работать на «неправильном» адаптере.
Это подводит меня к встречному вопросу, что такое правильный адаптер? Тот, который имеет наибольшую вычислительную мощность? Тот, у которого больше всего памяти? Тот, к которому прикреплен основной дисплей? Тот, который потребляет меньше всего энергии? Все эти вопросы, вероятно, имеют разные ответы на пользователя. Кто-то, использующий ноутбук, может предпочесть более длительное время автономной работы, чем лучшую графику. Кто-то может предпочесть играть на своем дополнительном мониторе (например, телевизоре).
Поэтому многие игры позволяют пользователю решать, какой графический процессор он хочет использовать. Большинство производителей графических процессоров имеют панели управления, где можно выбрать предпочтительный графический процессор (даже для каждого приложения). В некоторых играх есть диалог запуска, который позволяет пользователю явно выбирать предпочтительный графический процессор. Это диалоговое окно запуска часто отображается только при первом запуске или после сбоев, поэтому оно также может служить хорошим средством восстановления.
Nvidia предпочтительный выбор GPU , AMD предпочтительный выбор GPU , Flatout 2 предпочтительный выбор GPU
источник
Flush
и фиктивную цель вместоPresent
цепочки подкачки) для каждого и выбрать тот, который завершается быстрее всех по умолчанию. Тем не менее, вы должны разрешать пользователям выбирать, поскольку они могут жертвовать частотой кадров, чтобы увеличить время автономной работы.Я бы позволил игроку выбирать, какую видеокарту использовать, то есть через выпадающий список в меню параметров. Вы можете использовать графический процессор с самой высокой обнаруженной VRAM, тактовой частотой и т. Д. В качестве нормального значения по умолчанию. Вы можете пойти дальше и предложить игроку выбрать между «высокой производительностью» и «энергосбережением» (выбирает карту с наименьшей спецификацией) для значения по умолчанию при первом запуске игры, а затем позволить им быть более конкретными с их выбором в меню опций.
Это простое решение, которое также не будет раздражать проигрывателя, если он выберет нежелательную видеокарту, поскольку для него достаточно легко изменить ее, если он выбрал неправильную.
источник
Если вы выбираете адаптер на основе того, у которого больше всего памяти, у вас могут возникнуть проблемы с точным определением объема памяти, используемого Intel HD Graphics. Intel HD Graphics имеет доступ к двум банкам памяти; один выделенный и один общий с процессором. Размер этих двух банков отражается в структуре DXGI_ADAPTER_DESC как DedicatedVideoMemory и SharedSystemMemory. Для сравнения с другими адаптерами вы можете использовать только выделенный банк или оба.
У Intel есть образец обнаружения GPU, который также показывает, как измерить оба банка памяти.
источник