Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

DirectX 12 был выпущен вместе с Windows 10 в 2015 году. С выпуском DirectX 12 от Microsoft открылась новая эра для геймеров и разработчиков игр. Способный снизить нагрузку на ЦП при одновременном повышении производительности графического процессора, DirectX 12 быстро сделал себе имя.

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

Что такое DirectX от Microsoft?

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

Интерфейс прикладного программирования (API) позволяет двум или более компьютерным программам взаимодействовать друг с другом, что мы обсуждаем в

instagram viewer
наш обзор API. Думайте об этом как о телефоне. Если ваша мама отправит вам текст со списком продуктов, ваш телефон получит эти данные и отобразит их для вас. Это в основном API.

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

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

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

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

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

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

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

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

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

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

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

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

DirectX 11 был впервые выпущен для Windows Vista 27 октября 2009 года. Итак, с DirectX 12, выпущенным в 2015 году, это шестилетний разрыв между DirectX 11 и DirectX 12. За это время с использованием DirectX 11 были разработаны тысячи игр. К сожалению, перейти с 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 11 в Guild Wars 2, поскольку игра его не поддерживает. Это полностью решение разработчика ArenaNet.

Кредит изображения: Мартин Керштейн/Войны Гильдий 2

Хотите верьте, хотите нет, но ArenaNet понадобилось девять лет, чтобы перейти с DirectX 9 на DirectX 11. Однако есть некоторые игры, которые поддерживают как DirectX 11, так и DirectX 12. Фортнайт (читать наша шпаргалка Fortnite), например. Через настройки игры пользователи могут переключаться между обеими версиями. Подводя итог, не каждая игра поддерживает как DirectX 11, так и DirectX 12. Для тех, кто это делает, переключитесь между ними и определите для себя, что лучше работает на вашем ПК.

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

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

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