Как запустить гостранер в directx 12

Обновлено: 02.07.2024

Microsoft анонсировала DirectX 12 в 2014 году, но никакой информации по совместимости тогда не предоставила. На момент анонса новой версии DirectX, последней версией Windows была Windows 8. Релиз Windows 10 состоялся только в 2015 году.

Изначально предполагалось, что Microsoft искусственно ограничит поддержку DirectX 12 и реализует ее только в Windows 8 и последующей версии Windows (тогда считалось, что это будет Windows 9).

В конце 2014 года Microsoft объявила, что Windows 10 действительно будет поставляться с поддержкой DirectX 12. Появились мнения, что новая версия DirectX не будет доступна для более ранних версий Windows. Эта информация была официально подтверждена на портале поддержки Microsoft. Для систем Windows 7 были доступны только DirectX 11.0 и 11.1, а для Windows 8.1 – DirectX 11.1 и 11.2.

Четыре года спустя, в начале 2019 года Microsoft неожиданно объявила о своих планах добавить поддержку DirectX 12 для ряда игр в Windows 7. Разработчики игр попросили Редмонд интегрировать DirectX 12 в Windows 7, чтобы воспользоваться дополнительными возможностями и снизить издержки на разработку.

Microsoft решила пойти навстречу разработчикам и приступила к портированию среды выполнения Direct3D 12 в Windows 7. Компания Blizzard, разработчик World of Warcraft и других популярных проектов, первой добавила поддержку DirectX 12 для своих игр в Windows 7. Игроки World of Warcraft получили возможность наслаждаться более высокой частотой кадров и другими улучшениями, связанными с использованием DirectX 12.

Первоначально возможности переноса игр DirectX 12 на устройства с Windows 7 были ограничены. Microsoft работала лишь с несколькими игровыми студиями, из которых в официальных анонсах упоминалась только Blizzard.

В августе 2019 года Microsoft выпустила новое руководство по разработке, чтобы позволить разработчикам запускать свои DirectX 12 игры в Windows 7.

Чтобы помочь создателям игр, мы публикуем следующие ресурсы, позволяющие разработчикам запускать свои игровые проекты DirectX 12 в Windows 7.

Чтобы подготовить свои игры DirectX 12 к запуску в Windows 7, разработчики могут ознакомиться с руководством «Porting D3D12 games to Windows 7». Данный материал разбит на несколько глав. В начале руководства приводится информация по файлам и драйверам, которые требуются для настройки среды разработки и тестовых машин. В других главах рассказывается, как настроить DirectX 12 игры для ПК Windows 7, приводятся советы по оптимизации и рекомендации по подготовке релиза.

Никогда не поздно?

Самый главный вопрос, который сразу же назревает: «Почему именно сейчас?». В январе 2020 года Windows 7 достигнет окончания срока поддержки и перестанет получать какие-либо обновления. Хотя компании могут на платной основе продлить поддержку до трех лет, они не являются основной целевой аудиторией игровых проектов.

С другой стороны, системы Windows 7 мгновенно не исчезнут в январе 2020 года. По аналогии с Windows XP, могут пройти годы, прежде чем рыночная доля операционной системы упадет ниже 10 процентов. Поэтому разработчики игр могут продолжать поддерживать Windows 7 даже после официального прекращения поддержки системы.

В любом случае, время для данного нововведения выбрано не самое удачное. Понятно, что изначально Microsoft хотела мотивировать геймеров переходить на Windows 10, сделав поддержку DirectX 12 эксклюзивной в своей новой ОС. Напомним, что прошлая аналогичная попытка в случае с Windows Vista и DirectX 10 Vista не сработала. Геймеры и разработчики игр преимущественно проигнорировали DirectX 10.

Что такое DirectX 12

DirectX 12

DirectX 12 (DX12 или Директ Икс 12) – версия утилиты, разработанная специально для ОС Windows 10, которая способна задействовать мощность вашего компьютера в полную силу. Благодаря улучшению производительности мультимедийных задач, пользователь наблюдает качество компьютерных игр так, как и было задумано разработчиком: быстрая смена кадров, реалистичные визуальные эффекты, классный звук, впечатляющая графика, в том числе в 3D.

DX11 vs DX12

DX12 революционно отличается от всех предыдущих версий DirectX. Последняя версия утилиты ускоряет работу процессора даже в режиме многозадачности. Рендеринг работает без зависаний с такой частотой смены кадров, что воссоздается полное ощущение реальности при должной прорисовке картинки. За этим стоят 2 возможности DX12, которых раньше не было. Многопоточность при записи команд в буфер, а также асинхронные шейдеры помогают видеокарте одновременно работать над командами GPGPU и инструкциями рендеринга.

В DX12 также добавлена технология Tiled Resources. Со слов производителя, она дает «беспрецедентную детализацию», так как будет подгружать текстуры для рендеринга только в тот момент, когда взгляд игрока будет направлен в их сторону. Это разгрузит память и поддержит производительность на высокой скорости. Ощущение реальности пространства добавит трассировка лучей в реальном времени, которая визуализирует угол падения освещения.

Как определить текущую версию DirectX.

Узнать, какая версия DX используется сейчас ОС Windows 10, поможет инструмент DxDiag. Он раскроет всю нужную информацию о драйверах и компонентах, доступных для пользования. Для этого нужно:

Для более ранних версий Windows принцип действий схож.

Как установить софт

Если у вас установлено автоматическое обновление Windows, а программная платформа NET Framework работает корректно, то у вас все компоненты DirectX уже установлены, а следующие обновления версий будут происходить автоматически. Если в вашей ситуации необходимо установить вручную DX12, то сделать это можно по следующей схеме:

установка DX12

  1. Для 32 или 64 разрядной ОС Windows 10 скачиваем программное оборудование по ссылке на официальном сайте Microsoft:
  1. Нажимаем кнопку «Загрузки» в правом верхнем углу страницы браузера;
  2. Для запуска установки компонентов программы открываем файл «dxwebsetup.exe»;
  3. Во время установки действуем по запросам диалогового окна: соглашаемся с пользовательскими условиями и продолжаем установку кнопкой «Далее»;
  4. Приложение или устанавливается с нуля, или обновляет текущую версию.

При установке может загрузится более старая версия, чем DirectX 12. Это говорит о том, что модули вашего ПК не поддерживают обновления утилиты. Если ваша цель конкретно DX12, то вам придется поменять процессор и видеокарту на более мощные.

Почему на компьютере может быть по-прежнему версия DirectX 11 или 10, несмотря на обновления

видеокарты поддерживающие dx12

Интерфейс прикладного программирования (application programming interface или API) обеспечивает прямой доступ мультимедийных приложений к необходимому им оборудованию, чем ускоряет сам процесс игры. Сегодня этот API от Microsoft доминирует в мире компьютерных видеоигр для Windows, а разработчики учитывают ресурсы DX12 при разработке своих игр. О популярности утилиты говорит сотрудничество с Microsoft крупнейших производителей видеокарт, например, Nvidia и AMD. Также параметры своих процессоров под требования нового API подгоняют такие гиганты видеографики как Intel и Qualcomm.

Windows 10 с DirectX 12 используется для работы многих гаджетов: стационарные компьютеры, ноутбуки, планшеты, а также смартфоны. С этой утилитой работает и геймпад Xbox One. Но если на вашем ПК стоит оборудование, не подходящее под требования новых компонентов Майкрософтского API, то установить DX12 не удастся, у вас по-прежнему будет более старая версия. Проверьте, подходит ли ваш процессор и видеокарта под стандарты нового DX12:

Поддерживаемые графические процессоры

  • Core i3, i5, i7;
  • Haswell;
  • Broadwell;
  • Skylake;
  • Kaby Lake;
  • Coffee Lake;
  • Cannon Lake.

Все мобильные процессоры Qualcomm.

Совместимость с видеокартами

    • Radeon: HD 7000, 7000M, 8000, 8000M, R5 M240, R7 M200, R7, R9, RX 460-580, Vega Frontier Edition, RX Vega 56 и 64;
    • Ryzen: 2000G, 2000G PRO, а также мобильный Ryzen Mobile 1000, 1000 PRO, 2000, 2000 PRO;
    • Kaveri и Godavari: A4, A6, A6 PRO, A8, A8 PRO, A10, A10 PRO;
    • Mullins: E1, A4, A10 из серии Micro-6000;
    • Beema: E1, E2, A4, A6, A8.

    Если в этом списке не оказалось вашей модели процессора и видеокарты – не отчаивайтесь. Попробуйте поискать информацию о совместимости на сайте разработчика вашего оборудования. Представленный список не исчерпывающий и приводит только самые распространенные модели.

    Как удалить DX12

    Как удалить DX12

    Если при запуске игр или других приложений, обслуживанием которых занимается DirectX, возникает ошибка, то виной всему скорее всего служит повреждение библиотеки. Обычно обновление программного обеспечения решает эту проблему. Но если обновление не дало результата, приходится применять более радикальный путь – удаление и новая установка.

    С каждым годом набор компонентов API от Майкрософт увеличивается, ровно как и количество мультимедийных приложений. Чтобы пользователь нечаянно не нарушил стройную работу Windows, DirectX устанавливается вместе с операционной системой. Поэтому удалить DX12 с компьютера обычным способом через панель управления «Удалить или изменить программу» нельзя. Но есть и другой вариант.

    1. Для начала создайте точку восстановления. Если что-то пойдет не так, всегда можно вернуться к первоначальной версии.
    2. Скачиваем веб-установщик библиотек DirectX. Обращаем ваше внимание, что во время инсталляции будет установлена последняя поддерживаемая вашим оборудованием версия. Она включает все компоненты предыдущих вариаций, так что игры, требующие более старых изданий DX, будут работать.
    3. Скачиваем программу-деинсталлятор для DX. Например, DirectX Eradictor, DirectX Killer или DirectX Happy Uninstall.
    4. Отключаем Интернет, чтобы система не запустила автоматическое обновление.
    5. Удаляем компоненты API с помощью деинсталлятора, после чего обязательно перезапускаем систему.
    6. Устанавливаем ранее скаченный файл «dxwebsetup.exe» и еще раз перезагружаем компьютер.

    DX11vs DX12

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

    Ели вы настоящий ценитель качественных игр, то без DX12 не обойтись. Разработчики Майкрософт постарались и совершили реальный прорыв, открыв для создателей игр новые возможности. Установив последнюю версию DX12, вы почувствуете существенную разницу в прорисовке деталей и качестве визуальных эффектов даже на одном и том же оборудовании.



    20 марта 2014 года корпорация Microsoft объявила на конференции Game Developers Conference о выпуске DirectX* 12. За счет сокращения избыточной обработки ресурсов DirectX 12 будет способствовать более эффективной работе приложений и снижению потребления электроэнергии, благодаря чему можно будет дольше играть на мобильных устройствах без подзарядки.
    На конференции SIGGRAPH 2014 специалисты Intel измерили потребляемую мощность ЦП при запуске простого демо с астероидами на планшете Microsoft Surface* Pro 3. Демонстрационное приложение можно переключать с API DirectX 11 на API DirectX 12 нажатием кнопки. Это демонстрационное приложение рисует огромное количество астероидов в космосе при фиксированной кадровой скорости. При использовании API DirectX 12 API потребляемая мощность ЦП снижается более чем вдвое по сравнению с DirectX 11**. Устройство работает в менее интенсивном тепловом режиме и способно дольше проработать от аккумулятора. В типичных игровых сценариях всю незадействованную мощность ЦП можно израсходовать на улучшение физики, искусственного интеллекта, алгоритмов поиска путей или других задач с интенсивной нагрузкой на ЦП. Таким образом, игра становится более мощной по функциональности или более экономичной с точки зрения потребления электричества.

    Инструменты

    • Windows* 10
    • Пакет DirectX 12 SDK
    • Visual Studio* 2013
    • Драйверы ГП, поддерживающие DirectX 12

    Обзор

    С высокоуровневой точки зрения, по сравнению с DirectX 10 и DirectX 11, архитектура DirectX 12 отличается в области управления состояниями, отслеживания и управления ресурсами в памяти.
    В DirectX 10 появились объекты состояний для настройки группы состояний во время выполнения. В DirectX 12 появились объекты конвейера состояния (PSO), которые служат еще более крупными объектами состояний вместе с шейдерами. В этой статье рассматриваются изменения в работе с ресурсами; группировка состояний в PSO будет описана в дальнейших статьях.
    В DirectX 11 система отвечала за предсказание и отслеживание использования ресурсов, что ограничивало возможности создания приложений при широкомасштабном использовании DirectX 11. В DirectX 12 именно программист (а не система и не драйвер) отвечает за обработку трех следующих моделей использования.

    1. Привязка ресурсов
    DirectX 10 и 11 отслеживали привязку ресурсов к графическому конвейеру, чтобы поддерживать в рабочем состоянии ресурсы, уже высвобожденные приложением, поскольку незавершенные операции ГП могли ссылаться на эти ресурсы. В DirectX 12 система не отслеживает привязку ресурсов. Заниматься управлением жизненным циклом объектов должно приложение, то есть программист.

    2. Анализ привязки ресурсов
    DirectX 12 не отслеживает привязку ресурсов, чтобы определить, произошло ли переключение ресурсов. Например, приложение может записывать в цель рендеринга с помощью представления цели рендеринга (RTV), а затем прочитать эту цель рендеринга в качестве текстуры с помощью представления ресурсов шейдера (SRV). В API DirectX 11 драйвер ГП должен был «знать», когда происходит такое переключение ресурсов, чтобы не допускать конфликтов при чтении, изменении и записи данных в памяти. В DirectX 12 вы должны идентифицировать и отслеживать все переключения ресурсов с помощью отдельных вызовов API.

    3. Синхронизация сопоставленной памяти
    В DirectX 11 драйвер обрабатывает синхронизацию сопоставленной памяти между ЦП и ГП. Система анализировала привязки ресурсов, чтобы понять, требуется ли задержка рендеринга, поскольку еще не отменено сопоставление ресурса, который был сопоставлен для доступа ЦП. В DirectX 12 приложение должно обрабатывать синхронизацию доступа ЦП и ГП к ресурсам. Единый механизм для синхронизации доступа к памяти запрашивает событие для пробуждения потока по завершении обработки в ГП.
    Перемещение этих моделей использования ресурсов в приложения потребовало нового набора интерфейсов программирования, способных поддерживать широчайший набор архитектур ГП.
    Далее в этой статье описываются новые механизмы привязки ресурсов, первым из которых являются дескрипторы.

    Дескрипторы

    Дескрипторы описывают ресурсы, хранящиеся в памяти. Дескриптор — это блок данных, описывающий объект для ГП, в «непрозрачном» формате, предназначенном для ГП. Дескрипторы с некоторой натяжкой можно рассматривать как замену прежней системы «представлений» в DirectX 11. В дополнение к различным типам дескрипторов DirectX 11, таких как представление ресурсов шейдера (SRV) и представление неупорядоченного доступа (UAV), в DirectX 12 появились другие типы дескрипторов, например семплеры и представление постоянного буфера (CBV).
    Например, SRV выбирает, какой нужно использовать базовый ресурс, какой набор рельефных карт и срезов массива и в каком формате интерпретировать память. Дескриптор SRV должен содержать виртуальный адрес ресурса Direct3D* (который может быть текстурой) в ГП. Приложение должно убедиться в том, что базовый ресурс не уничтожен и не является недоступным из-за нерезидентности.
    На рис. 1 показан дескриптор «представления» текстуры.



    Рисунок 1. Представление ресурса шейдера в дескрипторе [использовано с разрешения © Корпорация Microsoft]

    Для создания представления ресурсов шейдера в DirectX 12 используйте следующую структуру и метод устройства Direct3D.

    Пример кода SRV может выглядеть примерно так.

    Этот код создает SRV для двухмерной текстуры и указывает ее формат и виртуальный адрес ГП. Последним аргументом для CreateShaderResourceView является маркер кучи дескрипторов, которая была выделена перед вызовом этого метода. Дескрипторы обычно хранятся в кучах дескрипторов, которые подробнее описаны в следующем разделе.
    Примечание. Также можно передавать некоторые типы дескрипторов в ГП с помощью так называемых корневых параметров (с учетом версий драйверов). Подробнее об этом см. ниже.

    Кучи дескрипторов

    Кучу дескрипторов можно рассматривать как один выделенный объем памяти для нескольких дескрипторов. Различные типы куч могут содержать один или несколько типов дескрипторов. В настоящее время поддерживаются следующие типы.

    Существует тип куч для дескрипторов CBV, SRV и UAV. Также существуют типы для работы с представлениями цели рендеринга (RTV) и представлением формата глубины (DSV).
    Следующий код создает кучу дескрипторов для девяти дескрипторов, каждый из которых может относиться к типу CBV, SRV или UAV.

    Первые две записи в описании кучи — это количество дескрипторов и типы дескрипторов, которые могут быть в этой куче. Третий параметр D3D12_DESCRIPTOR_HEAP_SHADER_VISIBLE описывает эту кучу дескрипторов как видимую для шейдера. Можно использовать кучи дескрипторов, невидимые для шейдера, например, для промежуточного хранения дескрипторов в ЦП или для RTV, недоступных для выбора изнутри шейдеров.
    Этот код устанавливает флаг, из-за которого куча дескрипторов становится видной для шейдера, но есть еще один уровень косвенной адресации. Шейдер может «увидеть» кучу дескрипторов посредством таблицы дескрипторов (существуют также корневые дескрипторы, не использующие таблицы; подробнее о них см. ниже).

    Таблицы дескрипторов

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

    Таблица дескрипторов указывает на кучу дескрипторов с помощью смещения. Вместо того чтобы заставлять графический конвейер всегда просматривать всю кучу, переключение таблиц дескрипторов позволит без существенных затрат изменить набор ресурсов, используемых данным шейдером. При этом шейдеру не придется отыскивать ресурсы в пространстве кучи.
    Другими словами, приложение может использовать для разных шейдеров несколько таблиц дескрипторов, указывающих на одну и ту же кучу, как показано на рис. 2.



    Рисунок 2. Различные шейдеры указывают на кучу дескрипторов с помощью нескольких таблиц дескрипторов

    В следующем примере кода создаются таблицы дескрипторов для SRV и семплера, видимые для пиксельного шейдера.

    При этом таблица дескрипторов видна только пиксельному шейдеру; это ограничение устанавливается с помощью флага D3D12_SHADER_VISIBILITY_PIXEL. Следующее перечисление определяет различные уровни видимости таблицы дескрипторов.

    Если указать флаг, задающий видимость для всех, аргументы будут передаваться на все этапы шейдера, хотя видимость задается только один раз.
    Шейдер может обнаруживать ресурсы с помощью таблиц дескрипторов, но сначала шейдер должен «узнать» об этих таблицах дескрипторов с помощью корневого параметра в корневой подписи.

    Корневая подпись и параметры

    • Таблицы дескрипторов. Как описано выше, они содержат смещение и количество дескрипторов в куче.
    • Корневые дескрипторы. Непосредственно в корневом параметре можно хранить лишь небольшое количество дескрипторов. При этом приложению больше не требуется размещать эти дескрипторы в куче дескрипторов, устраняется косвенная адресация.
    • Корневые константы. Это константы, предоставляемые шейдерам напрямую, без необходимости работы с корневыми дескрипторами и таблицами дескрипторов.

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

    В следующем коде две упомянутые выше таблицы дескрипторов хранятся как корневые параметры в корневой подписи.


    Все шейдеры в PSO должны быть совместимыми с корневой подписью, указанной с этим объектом PSO; в противном случае объект PSO не будет создан.
    Корневую подпись необходимо задать для списка команд или пакета. Для этого мы вызываем:

    1 commandList->SetGraphicsRootSignature(mRootSignature);
    После задания корневой подписи нужно определить набор привязок. В приведенном выше примере это делается с помощью следующего кода.


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

    Собираем компоненты вместе

    В приведенном ниже крупном фрагменте кода показаны все механизмы, используемые для привязки ресурсов. Это приложение использует только одну текстуру, а этот код предоставляет семплер и SRV для этой текстуры.

    Статические семплеры

    Итак, мы увидели, как создать семплер с помощью кучи дескрипторов и таблицы дескрипторов. Но есть еще один способ использовать семплеры в приложении. Поскольку множеству приложений требуется лишь ограниченный набор семплеров, можно использовать статические семплеры в качестве корневого аргумента.
    В настоящее время корневая подпись выглядит следующим образом.

    Набор статических семплеров можно определить независимо от корневых параметров в корневой подписи. Как уже было сказано выше, корневые параметры определяют пространство привязки, где во время выполнения можно предоставить аргументы, тогда как статические семплеры по определению являются неизменными.
    Поскольку корневые подписи можно создавать в HLSL, там же можно создавать и статические семплеры. В настоящее время в приложении может быть не более 2032 уникальных статических семплеров. Это немного меньше, чем следующее значение степени двойки, и позволяет драйверам задействовать некоторое пространство для внутреннего использования.
    Статические семплеры, определенные в корневой подписи, не зависят от семплеров, выбранных приложением для помещения в куче дескрипторов, поэтому оба механизма можно использовать одновременно.

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

    Решение ошибки

    Не удалось обнаружить файлы DirectX 12 с кодом ошибки ERR_GFX_D3D_SWAPCHAIN_ALLOC_2

    Способ 1: переустанавливаем DirectX 12

    DirectX по умолчанию установлена в Виндовс 10. Версия библиотеки компонентов зависит от типа графического адаптера. Несмотря на то, что DirectX встроен в ОС, переустановить его не сложно. Нужно выполнить несколько шагов.

    1. Отключить защиту системы. Это необходимо сделать в первую очередь, иначе ОС не даст удалить библиотеку. Для отключения необходимо открыть «Пуск», затем «Система» и выбрать на панели слева «Защита системы». В открывшемся окне нужно кликнуть по «Настроить», отметить маркером «Отключить защиту системы» и сохранить изменения.
    2. Удалить DirectX. Для это придется использовать стороннее ПО. Отлично подходит программа DirectX Happy Uninstall. С ее помощью можно не только удалить файлы, но и наоборот восстановить их. Также можно применить любую другую похожую утилиту. Стоит отметить, что приложение удалит только основные файлы, но не все.
    3. Установка недостающих компонентов. Сделать это можно зайдя на официальный сайт Майкрософт и найдя «Веб-установщик исполняемых библиотек DirectX для конечного пользователя». После скачивания установщика его необходимо открыть и установить DirectX, учитывая подсказки.

    переустанавливаем DirectX 12

    После переустановки библиотек стоит перезагрузить компьютер.

    Способ 2: обновляем или заменяем драйвера видеокарты

    Способ 3: создаем файл system.xml

    Привести к ошибке может и отсутствие папки с настройками игры Settings. Полный путь к ней должен быть следующий: C:\Users\Имя Пользователя\Documents(Документы)\Rockstar Games\Red Dead Redemption 2\. Для исправления ошибки в таком случае нужно:

    1. Открыть папку и найти каталог «Settings», а в случае его отсутствия — создать.
    2. Сделать новый текстовый файл.
    3. Перейти на сайт rdr2.forceflow.be, кликнуть Load Examle и скопировать весь текст в открытый документ.
    4. Файл нужно сохранить под именем system.xml.

    Не удалось обнаружить файлы directx 12

    После этих действий ошибка больше не должна появляться.

    Способ 4: меняем параметры графики в system.xml

    1. Найти строчку «kSettingAPI_DX12» и заменить ее на «kSettingAPI_Vulkan» либо наоборот.
    2. Найти элемент с разрешением экрана и установить параметры монитора: screenWidth value=хххх, screenHeight value=хххх.
    3. В предпоследней строке можно будет увидеть название видеокарты, к примеру, NVIDIA GeForce RTX 2070 SUPER. Сюда необходимо скопировать и вставить полное имя модели, установленной на ПК.

    Не удалось обнаружить файлы directx 12

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

    Читайте также: