Будет ли пользовательская реализация DirectX 12 такой же, как DirectX 11?

Я читаю «Практический рендеринг с DirectX 11» и хочу написать простой движок после глубокого понимания концепций DirectX.

Но сегодня у нас есть DirectX 12, который решает проблему в виде издержек драйвера (потому что мы ближе к аппаратному обеспечению), и я думаю об использовании 12 в качестве основного средства визуализации. Но будет ли мой двигатель неким драйвером в конце разработки? Я думаю, что разработчики драйверов намного умнее меня, поэтому я могу просто сделать 12 рендеринга медленнее, чем 11.

1

Решение

DirectX 11 и DirectX 12 решают одну и ту же проблему, но по-разному. Они оба управляют одним и тем же оборудованием и имеют доступ к одним и тем же аппаратным функциям. Разница в том, как центральный процессор и память управляются.

В DirectX 11 API является «низкоуровневым», но среда выполнения DirectX управляет видеопамятью, координирует загрузку / выгрузку ресурсов, управляет переименованием буфера и обеспечивает правильную синхронизацию между графическим процессором и процессором.

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

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

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

Также важно отметить, что DirectX 11 и DirectX 12 имеют разные системные требования. DirectX 11 поддерживается в Windows 7, Windows 8.1 и Windows 10 и требует драйверов WDDM 1.x, которые широко доступны для видеооборудования, начиная от Аппаратный уровень Direct3D 9.1 до 11.1. DirectX 12 поддерживается в Windows 10 (включая Xbox One) и требует драйверов WDDM 2.0, которые доступны не для всех видеооборудования. Драйверы WDDM 2.0 широко доступны для большинства аппаратных средств Direct3D Feature Level 11.0 или более поздней версии, которые являются большинством графических процессоров на рынке для «основных игроков ПК», но не для большей части видеокарт, используемых в бизнес-настройках или старых игровых системах ПК.

Прямо сейчас «лучшее место» для использования DirectX 12 — если вы пишете игру и у вас есть опытная команда графических разработчиков большого размера; нацелены на консоль, «основных» компьютерных геймеров и / или универсальную платформу Windows (UWP) для настольных компьютеров; и ожидаем, что игра будет привязана к процессору.

Увидеть Набор инструментов DirectX за DirectX 11 а также DirectX 12

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector