DirectX — это набор API или интерфейсов прикладного программирования, используемых программным обеспечением для отображения мультимедийного контента и взаимодействия с графическим оборудованием. API основного компонента DirectX, Direct3D, обеспечивает связь между программным обеспечением и графическим оборудованием. Поскольку все оборудование различно, использование стандартизированной библиотеки функций и вызовов для взаимодействия с вашей видеокартой ускоряет разработку игр. Это называется аппаратной абстракцией, и это основная задача API.
Подумайте об автомобилях: если вы умеете водить одну машину, вы сможете водить и все. Педали газа и тормоза находятся на том же месте, руль вращается в ту же сторону, а двери открываются наружу. Могут быть некоторые незначительные различия в некритических функциях, таких как радио, но в целом вы знаете, чего ожидать. DirectX и Direct3D похожи на них, позволяя разработчикам взаимодействовать с широким спектром оборудования, используя одни и те же инструменты. А поскольку большинство разработчиков игр используют стандартную библиотеку Direct3D, любые изменения в API могут одинаково повлиять как на геймеров, так и на программистов.
Что нового в DirectX 12?
Каждое крупное обновление DirectX и Direct3D приносит новые функции и разработки. Однако Direct3D 12 внес некоторые особенно существенные изменения. Фактически, это может открыть новую область низкоуровневых графических API, которые изменят способ разработки игр.
Аппаратная абстракция нижнего уровня
DirectX 12 теперь позволяет разработчикам приблизиться к «металлу» графического оборудования своих пользователей, предоставляя доступ к функциям, ранее недоступным для разработчиков. Использование оборудования более низкого уровня означает, что опытные разработчики могут писать более эффективный код, который выполняется быстрее. В частности, разработчики могут улучшить оптимизацию за счет более высокой многопоточной производительности и более эффективн
Contents
Что нового в DirectX 12?
ально может позволить провести низкоуровневую оптимизацию, аналогичную той, которую мы наблюдаем в консольных играх, где игры настроены на чрезвычайно специфическое оборудование среднего класса, добиваясь производительности, которая была бы невозможна без таких сверхспецифичных оптимизаций.Раньше DirectX 11 предлагал лишь довольно высокий уровень аппаратной абстракции, что значительно упрощало процесс кодирования. Фактически, именно в этом вся идея, которая делает аппаратные API такими мощными. Но это также означало, что возможности для тонкой настройки кода с учетом конкретных аппаратных функций стали менее частыми. Блог разработчиков Microsoft обеспечивает содержит ценную информацию о том, как именно DirectX 12 достигает этого.
Улучшенная многоядерная производительность
За последние несколько лет геймеры пришли к выводу, что многоядерные процессоры не столь полезны для игр. Вместо этого игры полагаются на быструю однопоточную производительность. Частично это происходит потому, что DirectX 11 не допускает такого большого распараллеливания. Несколько потоков ЦП могут одновременно отправлять команды рисования. Однако все они по-прежнему будут обрабатываться в очереди, по одному. DirectX 12 снимает это ограничение, позволяя многоядерным процессорам одновременно отправлять инструкции графическому процессору, открывая возможности для повышения производительности многоядерных процессоров.
Снижение накладных расходов на вызов
В DirectX 11 значительная часть мощности процессора тратится на интерпретацию инструкций API, а не на выполнение игрового кода. DirectX 12 снижает нагрузку на API, высвобождая вычислительные ресурсы для запуска игрового кода. Это означает, что игры с ограниченным процессором могут иметь более высокую производительность, поскольку мощность их процессора высвобождается для обработки игрового кода. Сегодня большинство игр не ограничены процессором, но вполне возможно, что новые игры расширят этот диапазон.
Явный мультиадаптер
DirectX 12 позволяет объединять несколько графических процессоров (также известных как «адаптеры дисплея») в одно логическое устройство. Эта функция, называемая явным мультиадаптером, позволяет программному обеспечению управлять несколькими графическими процессорами, как одним графическим процессором. Например, благодаря DirectX 12 встроенный графический процессор на вашем компьютере теперь может объединяться с вашим дискретным графическим процессором, предоставляя собственную вычислительную мощность. Расширенная поддержка API также может означать большую надежность и эффективность в конфигурациях SLI/CrossFire с несколькими графическими процессорами. В тестировании Microsoft использование встроенной графики в сочетании с дискретной графикой дало оценку Улучшенная многоядерная производительностьx-12-multiadapter-lighting-up-dormant-silicon-and-making-it-work-for-you/" target="_blank" rel="noopener" title="небольшой, но заметный край">небольшой, но заметный край в тестах.
Насколько важен DirectX 12 для геймеров?
Как и в случае со многими постепенными улучшениями, геймеры не увидят ежедневных различий между DirectX 11 и DirectX 12. Новые функции не открывают новые возможности рендеринга, которые впечатлят пользователей. Вы также не увидите скачка в 100 FPS между двумя стандартами. Но этот рост эффективности в конечном итоге приведет к повышению производительности на менее мощном оборудовании, что повысит мощность вашего ПК без обновления его оборудования.