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

Обновлено: 21.11.2024

В некоторых играх, которые я видел, есть возможность выбрать, какую из них использовать: dx9, 10 или 11.

Честно говоря, у меня есть только приблизительное представление о том, что они делают

большинство из них основаны на опыте.

- dx9 работает более плавно (только для меня, я полагаю)
- dx10 просто добавляет блеска, и я на самом деле его не использовал. по какой-то причине (в паре игр, которые я пробовал) это только мешало производительности
- в dx11 есть тесселяция и прочее

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

может ли кто-нибудь просветить меня по этой теме?

Мой компьютер

Система номер один

sygnus21

Член

DirectX предназначен для улучшения мультимедиа, включая игры, видео и аудио — DirectX 11

Кроме того, чем выше режим DX, тем больше нагрузка на вашу систему из-за увеличенного количества текстур (более высокого разрешения) в игре, и это может иметь огромное влияние на частоту кадров. Здесь в игру вступает сборка/компоненты системы. Например, видеокарты более высокого класса легче справляются с играми DX11, чем видеокарты среднего и низкого уровня. То же самое и с системой: система более высокого уровня будет работать лучше, чем система низкого и среднего уровня.

Поскольку сегодняшние системы намного более продвинуты, чем их предшественники, когда был выпущен DX9, здесь происходит своего рода эффект «выравнивания». Другими словами, современные системы намного мощнее и способны обрабатывать более сложные мультимедиа (включая игры), и поэтому требуют более продвинутого DirectX API (интерфейс прикладного программирования). Это причина для DX11 и перехода к DX12.

Да, DX11 может нагружать систему, но если система относительно новая и имеет уровень выше среднего, это не должно быть проблемой. Проблема возникает при попытке играть на системах/видеокартах среднего и низкого уровня. Здесь вы получаете удар по производительности за счет частоты кадров. В этом случае вы можете понизить режим DX, но за счет качества изображения, которое большинство называет глазным леденцем.

Надеюсь, это поможет лучше понять ситуацию.

Мой компьютер

Система номер один

ОС Windows 8.1 Pro с Media Center Тип компьютера ПК/настольная система Производитель/модель Изготовлено мной на заказ ЦП Haswell i7-4770K Материнская плата Gigabyte G1 Sniper 5 (BIOS F9) Память Corsair Dominator Platinum 32 гигабайта (1866 МГц) Графические карты ) Звуковая карта Sapphire R9-280 Vapor X Soundblaster Мониторы ZXR Дисплеи NEC PA242W — 24-дюймовый экран Разрешение экрана 1920 x 1200 Жесткие диски Samsung 512 гигабайт 850 Pro SSD (ОС), Samsung 256 гигабайт 840 Pro SSD (редактирование фотографий), Western Digital Caviar Черный блок питания высокой четкости 2 ТБ EVGA Supernova 1000 G2 Корпус Cooler Master HAF X Охлаждение Corsair H100i Кулер с замкнутым контуром Клавиатура Logitech Wireless Wave Мышь Logitech Performance MX Скорость Интернета Высокоскоростной браузер IE11 Антивирус Norton Security Другая информация Скорость ОЗУ: 1866 МГц @ 9-10-10-27 -2T, 1,5 В

правда

Член

Мой компьютер

Система номер один

ОС Win 8.1 Тип компьютера ПК/настольная система Производитель/модель ЦП HP Envy 700z Четырехъядерный процессор AMD 4,1 ГГц Материнская плата Память MSI 8 ГБ Видеокарты Встроенная звуковая карта Radeon HD 8670D Встроенный звук, Envy Audio; Жесткие диски Beats Audio 1 ТБ, 7200 об/мин, SATA, блок питания, 460 Вт, проводная клавиатура, USB, проводная мышь, USB, браузер IE11 / Chrome, антивирус, Защитник Windows, также известный как MSE

Не я

Член

DirectX предназначен для улучшения мультимедиа, включая игры, видео и аудио — DirectX 11

Кроме того, чем выше режим DX, тем больше нагрузка на вашу систему из-за увеличенного количества текстур (более высокого разрешения) в игре, и это может иметь огромное влияние на частоту кадров. Здесь в игру вступает сборка/компоненты системы. Например, видеокарты более высокого класса легче справляются с играми DX11, чем видеокарты среднего и низкого уровня. То же самое и с системой: система более высокого уровня будет работать лучше, чем система низкого и среднего уровня.

Поскольку сегодняшние системы намного более продвинуты, чем их предшественники, когда был выпущен DX9, здесь происходит своего рода эффект «выравнивания». Другими словами, современные системы намного мощнее и способны обрабатывать более сложные мультимедиа (включая игры), и поэтому требуют более продвинутого DirectX API (интерфейс прикладного программирования). Это причина для DX11 и перехода к DX12.

Да, DX11 может нагружать систему, но если система относительно новая и имеет уровень выше среднего, это не должно быть проблемой. Проблема возникает при попытке играть на системах/видеокартах среднего и низкого уровня. Здесь вы получаете удар по производительности за счет частоты кадров. В этом случае вы можете понизить режим DX, но за счет качества изображения, которое большинство называет глазным леденцем.

Надеюсь, это поможет лучше понять ситуацию.

Отличная информация у вас есть sygnus21

но у меня есть несколько дополнительных вопросов

например, у меня видеокарта среднего класса, но она поддерживает Dx11

выгодно ли мне запускать программы на dx11 или заставлять карту страдать больше, чем запускать ее на dx9?

DirectX 12 дебютировал два года назад, обещая значительное повышение производительности и эффективности по всем направлениям. Это включает в себя более эффективное использование ЦП, более близкий доступ к металлу, а также множество новых функций, в первую очередь трассировку лучей или DXR (DirectX Ray-tracing). Но что такое DirectX 12 и чем он отличается от DirectX 11. Давайте посмотрим.

Что такое DirectX: это API

Подобно Vulkan и OpenGL, DirectX — это API, позволяющий запускать видеоигры на компьютере. Однако, в отличие от своих аналогов, DX является проприетарной платформой Microsoft и изначально работает только в Windows. С другой стороны, OpenGL и Vulkan работают как на Mac, так и на Linux.

Что делает графический API, такой как DirectX? Он действует как промежуточное звено между игровым движком и графическими драйверами, которые, в свою очередь, взаимодействуют с ядром ОС. Графический API — это платформа, на которой разрабатываются реальный дизайн и механика игры. Думайте об этом как о MS Paint, где игра — это рисование, а приложение для рисования — это API. Однако, в отличие от Paint, программа вывода графического API доступна для чтения только API, используемому для ее разработки. Как правило, API предназначен для конкретной ОС. Вот почему игры для PS4 не работают на Xbox One и наоборот.

DirectX 12 Ultimate — первый графический API, нарушающий это правило. Он будет использоваться как на Windows, так и на Xbox Series X следующего поколения. С помощью DX12 Ultimate MS фактически интегрирует две платформы.

DirectX 11 и DirectX 12: что это значит для геймеров на ПК

Есть три основных преимущества API DirectX 12 для геймеров на ПК:

Лучшее масштабирование с многоядерными процессорами

Одним из основных преимуществ низкоуровневых API, таких как DirectX 12 и Vulkan, является более эффективное использование ЦП. Традиционно с играми на основе DirectX 9 и 11 большинство игр использовали только 2-4 ядра для различных механик: физики, ИИ, вызовов отрисовки и т. д. Некоторые игры даже ограничивались одним. С DirectX 12 все изменилось. Нагрузка более равномерно распределяется между всеми ядрами, что делает многоядерные процессоры более актуальными для геймеров.

Максимальное использование оборудования

Многие из вас могли заметить, что вначале графические процессоры AMD отдавали предпочтение играм с DirectX 12 больше, чем конкурирующим компонентам NVIDIA. Почему это?

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

Ближе к металлической поддержке

Еще одно важное преимущество DirectX 12 заключается в том, что разработчики имеют больший контроль над тем, как их игра использует аппаратное обеспечение. Раньше это было более абстрактно и в основном заботилось о драйверах и API (хотя некоторые движки, такие как Frostbyte и Unreal, также предоставляли низкоуровневые инструменты).

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

Это палка о двух концах, так как в дикой природе существует несколько архитектур графических процессоров, и независимые разработчики не могут оптимизировать свою игру для всех них. К счастью, сторонние движки, такие как Unreal, CryEngine и Unity, делают это за них, и им нужно сосредоточиться только на дизайне.

Как DirectX 12 повышает производительность за счет оптимизации использования оборудования

Опять же, есть несколько основных усовершенствований API, которые способствуют этому:

Контекст API для каждого вызова

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

В DirectX 12 вызовы отрисовки стали более гибкими. Вместо единого глобального состояния (контекста) каждый вызов отрисовки из приложения имеет собственное меньшее состояние (дополнительные сведения см. в PSO ниже). Эти вызовы отрисовки содержат необходимые данные и связанные с ними указатели внутри и не зависят от других вызовов и их состояний. Это позволяет использовать несколько потоков для разных вызовов отрисовки.

Объекты состояния конвейера

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

Каждый из объектов в DirectX 11 должен быть определен отдельно (во время выполнения), а следующее состояние не может быть выполнено до тех пор, пока не будет завершено предыдущее, поскольку для них требуются разные аппаратные устройства (шейдеры и ROP, TMU и т. д.) . Это приводит к недостаточному использованию оборудования, что приводит к увеличению накладных расходов и сокращению числа вызовов отрисовки.

В приведенном выше сравнении аппаратное состояние 1 представляет код шейдера, а 2 — комбинацию растеризатора и потока управления, связывающего растеризатор с шейдерами. Состояние 3 — это связь между наложением и пиксельным шейдером. Вершинный шейдер влияет на состояния аппаратного обеспечения 1 и 2, состояние растеризатора 2, состояния пиксельного шейдера 1-3 и так далее. Как уже объяснялось в предыдущем разделе, это приводит к дополнительной нагрузке на ЦП, поскольку драйвер обычно предпочитает дождаться разрешения зависимостей.

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

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

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

В приведенной ниже сцене есть тысячи объекты, которые необходимо отобразить. В традиционной модели для каждого из них потребовался бы уникальный вызов отрисовки от ЦП. Однако с помощью шейдера задач список объектов отправляется с помощью одного вызова отрисовки. Затем шейдер задач обрабатывает этот список параллельно и назначает работу шейдеру сетки (который также работает синхронно), после чего сцена отправляется в растеризатор для преобразования 3D в 2D.

Этот подход помогает сократить количество вызовов отрисовки ЦП на сцену значительно, тем самым повышая уровень детализации.

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

Шейдеры Mesh и Hull от NVIDIA также используют DX12

Очередь команд

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

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