DirectX 11 против DirectX 12: в чем различия и какой использовать?

DirectX 11 против DirectX 12: в чем различия и какой использовать?

DirectX 12 был выпущен вместе с Windows 10 в 2015 году. С его выходом компания Microsoft открыла новую эру для геймеров и разработчиков игр. Способный снизить нагрузку на CPU и повысить производительность GPU, DirectX 12 быстро завоевал себе имя.

Однако действительно ли повышение производительности так просто, как переход с DirectX 11 на DirectX 12? Давайте выясним это, рассмотрев различия между DirectX 11 и 12.

Что представляет собой DirectX от Microsoft?

DirectX 11 против DirectX 12: в чем различия и какой использовать?

DirectX — это набор API, используемых для обработки задач, связанных с мультимедиа. Сюда входит программирование игр на платформах Microsoft, таких как Windows и Xbox. Чтобы представить некоторый контекст, давайте вкратце поговорим об API.

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

В чем разница между DirectX 11 и DirectX 12?

DirectX 11 против DirectX 12: в чем различия и какой использовать?

Итак, каковы различия между DirectX 11 и DirectX 12? Проще говоря, DirectX 12 — это последняя версия DirectX. Одно из самых заметных различий между этими двумя версиями заключается в том, как они взаимодействуют с вашим оборудованием. Большинство игр, разработанных с использованием DirectX 11, задействуют от двух до четырех ядер процессора. Одно из этих ядер обычно предназначено для того, чтобы сообщать графическому процессору, что делать.

Затем игра использует оставшиеся ядра для обработки различных параметров, требующих большого количества мощностей CPU, например, движения объектов или расстояния прорисовки. С другой стороны, DirectX 12 распределяет нагрузку на CPU между несколькими ядрами, а также позволяет каждому ядру одновременно общаться с GPU.

DirectX 12 также поставляется с некоторыми причудливыми фичами. К ним относятся асинхронные вычисления и объекты состояния конвейера (PSO). Асинхронные вычисления повышают эффективность использования GPU, позволяя нескольким рабочим нагрузкам работать параллельно. Это, по сути, раскрывает весь потенциал вашего GPU.

Помимо рендеринга графики, ваш GPU отвечает за выполнение широкого спектра других задач, например, за выполнение алгоритмов машинного обучения. В DirectX 11 GPU может выполнять только одну из этих задач одновременно и в определенном порядке. Когда это происходит, производительность падает, потому что не все ресурсы GPU используются.
Представьте официанта в ресторане. Когда официант принимает заказ, он сначала спрашивает, что бы вы хотели выпить. После того как вам принесут напитки, он спросит, что бы вы хотели получить в качестве основного блюда. Ваш заказ выполняется поэтапно. Официант не спросит вас, что бы вы хотели на десерт, пока вы не съели основное блюдо. Хотя это и эффективно, но не так эффективно, как могло бы быть.


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

В DirectX 12 также появились PSO. В DirectX 11, когда геометрия игры передается на GPU для рендеринга, различные аппаратные настройки отвечают за интерпретацию и рендеринг этих данных. Это называется графическим конвейером и представляет собой поток входных и выходных данных, который происходит во время рендеринга кадров на GPU. Однако графический конвейер DirectX 11 не идеален.

Этот конвейер содержит набор различных состояний, включая состояние растеризации, состояние наложения, состояние трафарета глубины и другие компоненты. В DirectX 11 между этими различными состояниями существуют зависимости. В результате одно состояние не может быть завершено, пока не будет определено предыдущее состояние. Это снижает загрузку GPU и увеличивает накладные расходы CPU за счет снижения производительности.

Чтобы обойти эту проблему, в DirectX 12 появились PSO, которые представляют собой объекты, описывающие состояние всего графического конвейера. PSO похожи на бутылку, в которой содержатся различные состояния и компоненты, необходимые для создания изображения. Это позволяет графическому процессору предварительно обрабатывать каждое зависимое состояние вместо того, чтобы постоянно пересчитывать состояния на основе текущего графического конвейера.


Это значительно снижает накладные расходы процессора, присутствующие в DirectX 11, и повышает производительность. Итак, как же на самом деле выглядит это различие? По данным Microsoft, DirectX 12 снижает нагрузку на CPU на 50 процентов и повышает производительность GPU на 20 процентов. Хотя это и значительные улучшения, это не означает, что вы увидите те же результаты.

Почему переход с DirectX 11 на DirectX 12 не так прост

DirectX 11 был впервые выпущен для Windows Vista 27 октября 2009 года. Таким образом, если учесть, что DirectX 12 вышел в 2015 году, то между DirectX 11 и DirectX 12 прошло шесть лет. За это время тысячи игр были разработаны с использованием DirectX 11. К сожалению, перейти с DirectX 11 на DirectX 12 не так-то просто.

DirectX 11 против DirectX 12: в чем различия и какой использовать?

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

Учитывая это, игра, разработанная на DirectX 12, может иметь худшую производительность в зависимости от знаний разработчика об API. Есть улучшения, которые приходят с DirectX 12, но все зависит от того, насколько хорошо программист может их реализовать. По этой причине многие разработчики предпочитают придерживаться высокоуровневых API, таких как DirectX 11.

Что выбрать: DirectX 11 или DirectX 12?

Ответ зависит от нескольких вещей, например, от того, какую игру вы хотите запустить. Например, Guild Wars 2 работает на DirectX 11. Даже если ваша ОС и аппаратное обеспечение используют DirectX 12, у вас не будет возможности выбрать DirectX 12 в Guild Wars 2, потому что игра не поддерживает его. Это полностью решение разработчика, компании ArenaNet.

Хотите верьте, хотите нет, но ArenaNet потребовалось девять лет, чтобы перейти с DirectX 9 на DirectX 11. Однако есть игры, которые поддерживают и DirectX 11, и DirectX 12. Например, Fortnite. В настройках игры пользователи могут переключаться между обеими версиями.

Подведем итог: не все игры поддерживают DirectX 11 и DirectX 12. Для тех, кто поддерживает, переключитесь между ними и определите для себя, какая из них лучше работает на вашем ПК.

DirectX 11 против DirectX 12: в чем различия и какой использовать?

Возможность выбора между DirectX 11 и DirectX 12 также зависит от вашего оборудования. Практически любой современный GPU будет поддерживать DirectX 12, но этого нельзя сказать о более старых GPU, таких как Radeon HD 4870. Этот графический процессор, выпущенный в 2008 году, поддерживает только DirectX 10. Это означает, что на нем невозможно запустить большинство современных игр, которые работают с использованием DirectX 11 и DirectX 12.

Является ли DirectX 12 правильным выбором?

В целом, переход с DirectX 11 на DirectX 12 не так черно-бел, как кажется. Это зависит от множества факторов, таких как аппаратное обеспечение, программное обеспечение, операционная система, а также от того, поддерживает ли игра оба варианта. Все это необходимо учитывать перед принятием решения, и это, скорее всего, будет справедливо и для будущих поколений DirectX.

😍
2

😁
0

😲
0

😢
0

😡
0

🤢
0
Источник

Добавить комментарий

Your email address will not be published. Required fields are marked *.

*
*
You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Яндекс цитирования