игра Directx на ноутбуках с двумя видеоадаптерами и не тот подключил выход - PullRequest
0 голосов
/ 28 января 2019

У меня проблема с игрой directx 11, которую я разрабатываю на ноутбуках с двумя видеокартами.Нормальный случай, с которым я сталкиваюсь (и у меня есть это на моем собственном ноутбуке), является слабой картой Intel и мощной картой NVIDIA.Очевидно, что я хочу nvidia, и у меня уже есть перечисление адаптеров и определение правильного для создания интерфейса устройства.

Проблема в том, что nvidia не имеет выходных данных.Когда вы вызываете EnumOutputs на интерфейсе IDXGIAdapter, вы не находите ничего.И это имеет смысл, поскольку ноутбук имеет только один экран и подключен к адаптеру Intel (это можно узнать, вызвав EnumOutputs на интерфейсе Intel IDXGIAdapter).

Но это, по-видимому, делает невозможным создание полноэкранного обменацепочка для этого устройства (IDXGIFactory :: CreateSwapChain завершается сбоем, если дано устройство nvidia и полноэкранные настройки, даже когда я уверен, что другие параметры режима действительны).

Кажется, что другие игры находят способ обойти это.Например, Half-Life 2 из моего списка Steam работает в полноэкранном режиме.Однако Stardew Valley работает в оконном режиме без границ, что я мог бы сделать, но у него есть свои проблемы.

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

Одним из возможных решений может быть создание устройства для обоих адаптеров, а затем создание цепочки подкачки на платформе Intel в видеобщий ресурс устройства https://docs.microsoft.com/en-us/windows/desktop/api/d3d11/nf-d3d11-id3d11device-opensharedresource Я даже не уверен, что это возможно.Документы расплывчаты.

Прежде чем я пойду в трудный потенциально тупик, хотя мне интересно, знает ли кто-нибудь решение.

...