20:08:12 Особенности API DirectX | |
Даже если вы не знаете, что такое API, то наверняка слышали про DirectX. С этим стандартом рано или поздно сталкивается каждый пользователь ПК на Windows. Давайте узнаем, как и зачем он вообще появился, из каких компонентов состоит, а также сравним с конкурентом в лице Vulkan. ПоявлениеИстория графического API DirectX начинается в 1990 году. Тогда компания Microsoft разрабатывала Windows 95 — ей предстояло заменить популярную MS-DOS. Последняя была однозадачной операционной системой: выполняться мог лишь один процесс, который использовал все ресурсы компьютера. Разработчики легко получали доступ к вычислительным мощностям железа и выжимали из них максимальную производительность. За это MS-DOS и ценилась.
Но технологии не стояли на месте. Появление более совершенной многозадачной ОС было лишь делом времени — что и случилось в 1995 году, когда вышла финальная версия Windows 95. Новая система сама распределяла вычислительные ресурсы между несколькими задачами, а прямой доступ к ресурсам компьютера запретили. Возникла необходимость в инструменте, который позволил бы разработчикам приложений полностью использовать ресурсы железа без написания индивидуального кода под каждую комплектующую. В то время подобное решение уже существовало. Стандарт OpenGL от компании Silicon Graphics стремительно захватывал новый рынок — создатели приложений вовсю им пользовались. Но инженеры Microsoft решили разработать собственный API. Спустя три года после выхода первой версии OpenGL корпорация представила Games SDK, который впоследствии будет переименован в DirectX.
Стратегически он отличался от конкурента, поскольку состоял из набора интерфейсов различного назначения:
РазвитиеВ июне 1996 года вышел DirectX 2.0. Добавили интерфейс Direct3D, поддерживающий вывод уже трехмерной графики. Затем несколько лет наблюдалось лишь планомерное развитие в виде упрощения кода и улучшения обработки графики — без прорывных решений. Все это время продукт от Microsoft находился в роли догоняющего OpenGL. Все изменилось в ноябре 2000 года, когда вышел DirectX 8.0. Изменения в этой версии действительно можно назвать революционными. Во-первых, появились пиксельные и вершинные шейдеры — подпрограммы, которые вычисляют параметры графических объектов. Во-вторых, внедрили технологию мультитекстурирования, которую ранее «обкатали» на предыдущих версиях. На одном полигоне стало возможно использовать две и более текстуры одновременно, что значительно увеличило производительность 3D-графики. DirectX наконец перестал отставать от OpenGL, а версия 9.0 только закрепила лидирующие позиции. Разработчики графических приложений увидели перспективу и стали активно использовать API от Microsoft в своих продуктах.
А вот с DirectX 10 вышла промашка. Эта версия вышла одновременно с Windows Vista и не поддерживала другие операционные системы. Vista, как известно, пользовалась дурной славой и популярности среди пользователей не сыскала. Таким образом, она потянула на дно и сам API.
В этой версии внедрили новую модель драйвера WDDM (Windows Display Driver Model). Если в Windows XP драйвер дисплея «падал», то сразу появлялся синий экран смерти. В случае Vista завершается лишь работа конкретного приложения, которое и вызвало ошибку, а сама система остается работоспособной. Microsoft сделала выводы — DirectX 11 вышел в октябре 2009 года вместе Windows 7, но поддерживал и Vista. Основное нововведение — более эффективная тесселяция поверхностей.
Наконец, в июле 2015 года вышла актуальная на данный момент DirectX 12 — вместе с операционной системой Windows 10. Эту версию называют низкоуровневой — ее модель программирования ближе к железу, что позволяет разработчикам получать полный доступ к ресурсам ПК. Минус в том, что новая итерация API стала намного сложнее в программировании. Использование в играх и приложенияхЕще одно отличие 12-й версии — это полноценное использование многоядерных процессоров. DirectX 11 умеет кое-как работать лишь с четырьмя потоками.
Программный код DirectX 12 изначально не делится на определенное количество потоков, поэтому в нашем примере он использует все восемь ядер процессора, нагружая их более-менее равномерно:
Если приложение изначально пишется под DirectX 12, то преимущество в производительности может быть громадным.
Переход на актуальную версию API для разработчиков игр был не таким уж простым — изначально в новом режиме многие проекты работали хуже, чем при использовании давно знакомого DirectX 11. Но с каждым годом ситуация менялась. Сейчас все свежие тайтлы выходят с поддержкой актуального стандарта. Отличия от VulkanНа данный момент в роли конкурента DirectX выступает API Vulkan — эволюционное развитие упомянутого OpenGL, который прекратил существование в 2017 году. Продукты сильно отличаются друг от друга. DirectX — одноплатформенный стандарт. Он работает только на Windows и консолях Xbox One/Series. Vulkan же поддерживает Linux, Android, MacOS и несколько других, менее распространенных операционных систем. Помимо этого, DirectX — это проприетарный API. Его исходный код недоступен, а изменения может вносить только компания Microsoft. В свою очередь Vulkan является API с открытым исходным кодом. IT-сообщество может оперативно добавлять необходимые изменения. В современных играх между DirectX 12 и Vulkan в большинстве случае наблюдается паритет. Все зависит от конкретного игрового движка, способностей программистов, а также производителя графического чипа. Традиционно считается, что под DirectX лучше оптимизированы видеокарты от NVIDIA, а под Vulkan — продукты AMD. --- Хотел бы дополнить, что статья конечно очень кратенькая, слишком много порезано. Это я просто к тому, что нарушена схематичность повествования. В начале пошел разворот, пояснения и примеры, потом хоп-хоп, чик-чик и конец. А где же пояснения про Vulkan и его отличия от того же OpenGL? DirectX 10 вообще никак не связан с тем что написано, ибо не популярность Vista была обусловлена, сырыми дровами на устройства и совсем плохой обратной совместимостью со старыми приложениями, что в итоге и привело к её краху. В итоге про DirectX 10, ничего не сказано толком, лишь пару фраз, а конкретные фишки и как они работают и почему 10 версия не получила реально популярности не слова. Хотя все забывают, что на 10 Директе, вышло не мало проектов на Windows 7. Про 11 версию, только тесселяция упомянута, а там как минимум еще несколько отличий. Ни слова про DX7, 9.0A, B, C. Про 8 версию написано не верно, ибо историю надо изучать. Конечно для краткого изложения и для первого пробного пера может и сойдет, но все же тогда и вначале не стоит так углубляться, а потом прыг скоком лететь в конец. А также стоит изучить вопрос более подробно чтобы написать кратко, но более достоверно. Ну и на последок. Просто ошибок в статье много. Ну как минимум с 10 насчитывается. Мультитекстуры не в 8.0, а в 6.0. Правильнее было бы разделить на группы с 1 по 5, 6 и 7, с 8 по 9 с разновидностями, с 9L по 10 с разновидностями, 11 с разновидностями, 12 версии и в кратце рассказать фишки, отличия недостатки, иллюстрации сравнений или видео. В конце рассказать про Vulkan немного и сделать ремарку на продолжение к примеру про иерархию OpenGL. https://club.dns-shop.ru/blog/t-99-videokartyi/76700-razbor-api-directx-osobennosti-i-realizatsiya/ | |
|
Всего комментариев: 0 | |