После более четырех с лишним лет напряженной работы компания Microsoft представила наряду с ОС Windows Vista новую версию набора интерфейсов прикладного программирования, используемого главным образом для разработки игр. DirectX 10, как и его предшественники, обеспечивает связь между программами и железом. Большая часть нововведений приходится на интерфейс, отвечающий за обработку трехмерной графики — Direct3D 10.
Унифицированный шейдер: Главным нововведением в Direct3D 10 стало появление Shader Model 4.0. Ранее внутренние конвейеры видео процессора подразделялись на вершинные шейдеры, используемые для обсчета формы модели, и пиксельные шейдеры, предназначенные для расчета качественных характеристик поверхностей. Это приводило к тому, что в видеопроцессоре часто оставались незадействованными многие операционные блоки. В Direct3D 10 использована так называемая архитектура унифицированных шейдеров, которая в зависимости от потребностей в конкретный момент времени может решать самые разнообразные задачи. За счет подобного пересмотра конструкции видеопроцессора значительно разгружается аппаратная часть и появляется возможность переложить на GPU ряд дополнительных задач — например, простые расчеты физических явлений.
Геометрический шейдер: Преимущества гибкого программирования DirectX 10 можно использовать уже сейчас: новые геометрические шейдеры обсчитывают, как и вершинные, крупные поверхности объектов. Однако дополнительно они могут изменять форму объекта за счет добавления треугольников. Это на первый взгляд не такое уж и сенсационное новшество позволило видеопроцессору напрямую влиять на элементы трехмерной сцены. Подобная возможность не только позволит обойтись без участия центрального процессора в изображении таких впечатляющих эффектов, как рост травы (за счет создания цепочек треугольников), но и передаст видеопроцессору обсчет физических процессов, например клубящийся туман или волны на воде. Разгрузка центрального процессора позволит получить достаточное количество свободных ресурсов для придания 3D-сценам большей реалистичности и точности в передаче мелких деталей.
Новый 3D-драйвер: Каждая новая версия DirectX требует и новых драйверов для видеоплат. В случае с DirectX 10 предстоит кардинальная смена: новая модель видеодрайвера, которая называется WDDM (Windows Display Driver Model), работает теперь в двух раздельных режимах. Операционная система работает одновременно в двух режимах — обеспечивающем базовую функциональность всей ОС (kernel mode) и пользовательском (user mode). В последнем случае работают приложения, а в базовом — драйверы. Каждый переход от одного режима к другому требует определенного количества ресурсов. До настоящего времени драйверы видеоплат работали только в режиме kernel mode, в то время как игры, да и DirectX как приложение были активны в user mode. Всякий раз, когда данные о трехмерной сцене пересылались на DirectX, они должны были по отдельности переправляться дальше на драйвер. Для каждого пересылаемого элемента происходило требующее определенного времени переключение драйвера из одного режима в другой. Данная проблема, известная как small batch problem, ликвидирована в Windows Vista и DirectX 10. Драйвер видеоплаты теперь разделен между двумя режимами. Та его часть, которая работает в пользовательском режиме, обеспечивает все графические запросы, собирает их и единым пакетом передает в другую часть, обеспечивающую базовый режим работы. Это позволяет резко сократить потери времени. Видеоплаты с поддержкой DirectX 10 обеспечивают и такое преимущество: после инсталляции драйвера Vista не требуется перезагрузка. Кроме того, ОС может распознавать возможные сбои в работе видеопроцессора и даже самостоятельно перезапускать драйвер.
Полный комплект: В отличие от предыдущей версии — DirectX 9 — разработчики видеоплат с поддержкой DirectX 10 уже не имеют «права выбора» и должны интегрировать в чип поддержку всего набора функций. Как известно, в DirectX 9 имелись «производительные биты» (capability bits), которые «делегировали» интерфейсу DirectX возможности графического процессора, что позволяло DirectX 9 эмулировать не поддерживаемые видеочипом функции. Что же касается DirectX 10, то все его функции обязательно должны быть реализованы на аппаратном уровне. Несмотря на это, совсем не обязательно иметь видеоплату с поддержкой DirectX 10: даже старое железо и программы выиграют от применения новой модели драйверов для DirectX 10.