Новое в программировании Direct3D: 11 против 12

Новичку в программировании D3D следует ли просто изучить D3D12 непосредственно или необходимо изучить D3D11, прежде чем углубляться в D3D12?

Предполагая, что я начну с нуля и прилично знаю C++, куда мне идти?


person CodeAngry    schedule 29.11.2015    source источник


Ответы (1)


Я ответил на этот вопрос раньше так что вы должны взглянуть на этот пост.

Короче говоря, Direct3D 12 следует рассматривать как DirectX Extreme Pro. Предполагается, что вы уже являетесь экспертом в том, как работает среда выполнения Direct3D 11, до такой степени, что можете написать ее самостоятельно. Он разработан, чтобы позволить механизмам промежуточного программного обеспечения и низкоуровневым разработчикам графики иметь максимальный контроль над поведением графического процессора. Direct3D 11 также является низкоуровневым графическим API, но DirectX 12 имеет настолько тонкую абстракцию, что многие сложности современных графических процессоров доступны непосредственно программисту приложения; сложности, которые Direct3D 11 скрывает от вас.

Direct3D 12 очень мощный, но для достижения очень низкой нагрузки на ЦП API и среда выполнения мало что могут вам помочь. Это раскрывает модель памяти драйвера и делает синхронизацию GPU/CPU ручным процессом, немного похожим на «программирование без блокировки» на CPU.

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

Существует множество руководств, примеров, книг и других учебных материалов по Direct3D 11. Материал по Direct3D 12 немного скуден, в основном он состоит из содержимого на DirectX-Graphics-Samples репозиторий GitHub. В настоящее время я работаю над добавлением поддержки DirectX 12 в DirectX Tool Kit, но даже когда он будет доступен, вы обнаружите, что начать с Direct3D 11 намного проще, чем пытаться сразу перейти к DirectX. 12.

Еще одна вещь, которую следует иметь в виду, w.r.t. для DirectX 12: поддерживается только в системах Windows 10 с видеодрайверами с поддержкой DirectX 12. Сюда входят большинство уровня функций Direct3D аппаратное обеспечение 11.0+, включая NVIDIA Fermi, Kepler, Maxwell; AMD GCN; и Intel Haswell, Broadwell и Skylake. Это, однако, не включает старые видеокарты. См. раздел DirectX 12: большой шаг вперед для игр, технология AMD DirectX 12 и Блог разработчиков DirectX

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

ОБНОВЛЕНИЕ 2: я должен упомянуть, что, основываясь на недавнем опыте, если вы в основном используете функциональные возможности, предоставляемые в наборе инструментов DirectX (спрайты, спрайт-шрифт, базовые примитивы и модели и т. д.), переход от DirectX 11 в версию DirectX 12 довольно прямолинейна. Кроме того, если вы хотите использовать DirectX Raytracing, DirectML или Shader Model 6 , вам нужно использовать DirectX 12 вместо DirectX 11. Конечно, большинство разработчиков игр на самом деле используют существующие сторонние движки, такие как Unity или Unreal Engine, которые абстрагируют API, поэтому в таких случаях это скорее проблема вашей целевой платформы, а не удобства использования.

person Chuck Walbourn    schedule 30.11.2015
comment
Для чего это w.r.t? - person Soleil; 08.04.2018
comment
в отношении - person Chuck Walbourn; 09.04.2018