Технология DirectX™

версия 1.3 - 14 сентября 2005


Вступление

DirectX™, как один из ведущих инструментов реализации трехмерной графики в игровых приложениях, существует уже около десяти лет. Ему посвящено огромное количество разнообразных публикаций, в которых затрагиваются практически все аспекты этого API. Казалось бы, нет такой темы, которая еще не затронута, однако более глубокий анализ заставляет задуматься действительно ли это так.

История возникновения и развития DirectX малоизвестна, большей частью из-за недостатка информации. В ряде случаев можно прочитать краткие выдержки, состоящие из дат выхода той или иной версии, нововведений, исправления ошибок или вводных абзацев с упоминанием компании RenderMorphics. В результате просмотра различных статей и поиска на просторах сети накопился материал, вполне достаточный для осмысления и структурирования. В основном это общеизвестные факты и выдержки из архива новостей. Возможно, с их помощью удастся прояснить некоторые моменты и узнать больше о предмете.

А начиналось все так...

В далеком-далеком времени, когда безраздельно властвовала DOS, разработчики не знали проблем. Для игр тех времен было обычным делом обращаться напрямую к портам и видеопамяти в обход операционной системы и BIOS, что давало ощутимый прирост производительности. С увеличением размера игр, а также неудобством организации памяти в реальном режиме, назрела необходимость перехода в защищенный режим. Появились различные менеджеры, наподобие DOS4GW, позволявшие программам легко и удобно работать с адресацией в 32 бита. Увеличение размера памяти видеокарт и разрешений дисплея сподвигло общественность разработать стандарт VBE, ответственный за более простой доступ к видеопамяти. Все было просто прекрасно. Проблемы начались с увеличением производства различных устройств для PC сторонними производителями. Все больше и больше появлялось на рынке разнообразных конфигураций компьютеров и поддержка большинства из них, на аппаратном уровне, стала настоящей головной болью программистов. Времени на нее уходило больше чем на создание самой игры! Нужно было искать выход.

В то время компьютерный рынок MS-DOS делила с другими операционными системами. Однако большей частью и даже, возможно, благодаря руководству Microsoft конкуренты не получили широкого распространения и постепенно уходили. Параллельно с развитием MS-DOS Microsoft предпринимались попытки в виде выпуска новой операционной системы под названием Windows с совершенно другой идеологией. Как показала практика в начале не очень удачные. Сдвиг наметился лишь на третьей версии, появившейся в апреле 1992 года. Графический интерфейс, идея работы с файловой системой через рабочий стол с папками была заведомо привлекательней черного экрана с командной строкой. Все достоинства оценили только пользователи, разработчики игр не спешили осваивать новый продукт и оставались, верны культу прямого доступа к аппаратуре.

Выход следующей операционной системы под названием Windows 95 было заметно успешнее. Это и кардинально переработанный интерфейс, и 32 разрядность с поддержкой старых 16 битных программ, и многозадачность, и более дружественный к разработчику API. В частности дружественность заключалась в предоставлении программистам 32-разрядного интерфейса графических устройств (GDI), то есть части общей библиотеки-оболочки для функций ядра Windows – WinAPI, отвечающий за графический вывод. Однако и он был не способен завоевать сердца разработчиков игрового программного обеспечения. Уж больно медленно «договаривался» механизм GDI c драйверами видеокарт по сравнению с прямым рисованием в видеопамяти, который применяли тогда программисты под DOS. Скорость, обеспечиваемая GDI, была вполне приемлема для офисных приложений, для двумерных логических игр и маленьких аркад с несложной графикой, но совершенно не подходила для трехмерных задач. Создателям игр идея о том, что они будут писать под Windows 95, могла, привидится только в кошмарном сне.

Однако Windows 95 определила некий стандарт, которому необходимо было следовать при разработке новых устройств и написанию драйверов для них. Благодаря этому разработчикам приложений уже не нужно было разбираться во всех тонкостях того или иного аппаратного средства.

Естественно, что такого гиганта как Microsoft не устраивало, что ее последнее, дорогое и широко разрекламированное детище используют как операционную систему для пасьянсов и набора текстов. Поэтому практически сразу же были предприняты попытки, исправить положение. Первая заплатка носила название WinG. Эта графическая библиотека была существенно быстрее стандартного GDI. И разработчики игр откликнулись на новации. Вышло сразу несколько игр, использующих WinG - стратегические игры, несколько аркадных платформенных игр и стрелялок. Но у данной графической библиотеки было несколько весьма существенных недостатков: ограничение в 256 цветов, которое не давало использовать возможности новых видеоадаптеров, поддержка только 2-D графики, только оконный интерфейс. Кроме того, эта библиотека была сделана также и под Windows 3.xx , поэтому вместо того, чтобы устанавливать на машине Windows 95, геймеры ставили комбинацию DOS + Windows 3.xx + WinG, которая обладала примерно теми же возможностями, но при этом работала гораздо быстрее и занимала на порядок меньше места.

Популярность игр и желание заработать на этом сигменте рынка не давали покоя главе корпорации. В Microsoft все чаще стали задаваться вопросом: “Как сделать популярной новую ОС, в первую очередь среди игровых разработчиков?” Очевидно, предоставить им простоту и полную свободу в плане работы с аппаратурой, ну или почти полную. Располагая этой идеей, в Microsoft решили разработать новый АПИ, который дал бы разработчикам игр более прямой доступ до аппаратного обеспечения, тем самым, увеличив скорость выполнения игр под Windows. В данном случае шаг уместный и вполне правильный.

Зимой 1995 года (спустя полгода после выхода Windows 95) под пристальное внимание корпорации попала британская компания RenderMorphics с маленьким проектом, представленным на одной из выставок, который умел рисовать неплохие трехмерные изображения в реальном времени на обычном компьютере доступном каждому. И уже в феврале компания Microsoft приобретает RenderMorphics Ltd. Эта компания, занимавшаяся средствами визуализации трехмерной графики под общим названием RealityLab, обладая великолепным штатом программистов, добилась потрясающих результатов в области 2-D и 3-D, чем и привлекла к себе внимание гиганта. Став владельцем RenderMorphics, Microsoft немедленно приступила к конвертированию библиотек RealityLab под Windows 95. Сроки поджимали, интерес к новой платформе без приложений стремительно падал. Спеша выдать хоть что-нибудь, Microsoft выпускает, хоть и недоделанный, но совершенно революционный по сути, комплект библиотек, имеющий название Game SDK.

Подводя итоги можно с уверенностью сказать, что именно Game Software Development Kit - это зарождение будущего успешного продукта, первая веха в истории DirectX.

Архитектура DirectX

Что же такое DirectX? Это, прежде всего набор из нескольких API (application programming interface - интерфейс программирования приложений), позволяющих разработчикам игр, аудио проигрывателей и других приложений под Windows, получать доступ к особым функциям аппаратного обеспечения, без необходимости написания аппаратно-зависимого программного кода (если в железе нет каких либо возможностей, то они эмулируются программным способом). DirectX основан на наборе интерфейсов COM (Component Object Model - Компонентная Модель Объектов - спецификация интерфейса, в котором функции вызываются через указатели). Интерфейс COM используется не только в DirectX, но и на уровне операционной системы в качестве модели объектов.

Что это такое

DirectX архитектура обеспечивает два программных уровня обслуживающих ап паратные запросы от объектов DirectX.

      HAL - уровень абстракции аппаратных средств.
      HEL - уровень эмуляции аппаратных средств.

Оба уровня включают в себя устройства, которые определяют, с помощью каких средств будет выполнен тот или иной запрос.


HAL – включает в себя два устройства: оригинальный HAL и TnL HAL (Transform & Lighting - преобразование и освещение), представленный, начиная с седьмой версии. Используя устройства HAL, приложение может воспользоваться любым аппаратным средством предоставляемым системой.

HEL – обеспечивает эмуляцию аппаратных средств программным способом. Включает в себя RGB эмуляцию, Reference Device и NULL Device.

RGB эмуляция позволяет произвести весь процесс рендеринга программным способом и не поддерживает полностью DirectX (в последних версиях DirectX RGB эмуляция отсутствует)

Reference Device – поддерживает DirectX полностью и позволяет оценить тот или иной эффект, если он не реализован аппаратно на данный день. В частности в лаборатории WHQL используют данное устройство для определения правильности осуществления аппаратным средством особенностей DirectX.

NULL Device – осуществляет установку команд трансформации в очередь графического конвейера, но не позволяющий осуществлять растеризацию. Используется в качестве оценки скорости. (Для внутренних целей)

Таким образом, если отбросить все второстепенное, то DirectX предоставляет две возможности использования: аппаратную и программную.

Компоненты DirectX

DirectDraw - часть набора драйверов DirectX, поддерживающих непосредственную работу с видеокартой и позволяющих, например, прямую запись в видеопамять. Фактически, это менеджер видеопамяти. Используя DirectDraw, любая программа может манипулировать видеопамятью, не привязывая эти действия к конкретной модели видеокарты. Выполняет роль основы для таких интерфейсов как Direct3D и DirectShow. Начиная с восьмой версии данный компонент, совместили с Direct3D, в результате этого он престал существовать как самостоятельный интерфейс.

Direct3D – набор графических сервисов, обеспечивающих трансформацию и растеризацию трехмерной графики в реальном масштабе времени.

DirectInput – часть набора драйверов DirectX, поддерживающих непосредственную работу с аналоговыми и цифровыми джойстиками. Драйвера DirectInput используют реестр Windows для сохранения параметров джойстика и результатов его калибровки.

DirectSound – аудио составляющая набора DirectX, позволяющая производить микширование звуковых данных в реальном времени, а также предоставляющая прямой доступ к звуковой карте. В своем составе имеет интерфейсы для работы, как с обычным, так и с 3D звуком.

DirectMusic – обеспечивает мультипоточную архитектуру для воспроизведения музыки. Поддерживает программную генерацию волновой таблицы для MIDI звуков, а также загрузку инструментальных наборов.

DirectPlay – программный интерфейс для доступа игровых программ к коммуникационным средствам Windows, ликвидирующий зависимость конкретной игры от сетевого протокола и метода соединения.

DirectShow – программный интерфейс для работы с новой периферией, такой, например, как цифровые видеокамеры. Постепенно должен заменить устаревший Video for Windows. Осуществляет работу с потоковыми данными такими как видео и звук.

DirectSetup – обеспечивает базу данных, содержащую большинство известных конфигураций. Упрощает установку приложения с популярными аппаратными средствами.

Хронология развития

Прежде чем переходить к хронологии, следует уточнить, что выпуск очередной версии DirectX, как правило, сопровождается выпуском соответствующего SDK для разработки приложений. В основном здесь приведены данные именно о версии SDK и большинстве новшеств, которые он привносит.

DirectX 1.0 – Game Software Development Kit

февраль 1995
Основные компоненты: DirectDraw, DirectInput, DirectSound, DirectPlay

Несмотря на то, что в этом комплекте отсутствовал главнейший на сегодняшний день компонент - Direct3D, выпуск этого продукта, всколыхнул околокомпьютерный мир. Первоначально, выход Game SDK, не вызвал большого восторга в среде программистов - мнение о том, то на платформе Windows 95 быстрые и красивые игры не живут, слишком прочно утвердилось в головах разработчиков. Но выход Virtual Fighter - первой по настоящему быстрой, красивой и реалистичной игры под Windows 95 буквально поставил всех программистов на уши. Впервые компьютер с Windows 95 на борту на равных состязался с игровыми приставками. И это без Direct3D!

Приковав, таким образом, всеобщее внимание к Windows 95 и продемонстрировав дальнейшие перспективы данной операционной системы, Microsoft на этом не остановилась и в 1996 году выпускает продолжение под уже привычным для нас названием DirectX 2. Главное изменение в этом комплекте - добавление Direct3D. Именно тогда DirectX обрел привычные очертания.

DirectX 2.0

1996
Основные компоненты: DirectDraw, DirectInput, DirectSound, DirectPlay

Частично анонсированы трехмерные возможности.

DirectX 2.0а

1996
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

Direct3D - Введен новый API Direct3D частично анонсированный в версии 2.0



Дальнейшие версии под номером три являлись очередным неспешным развитием продукта с присущими этому исправлениями ошибок и добавлением небольших новшеств.

DirectX 3.0

1996
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

обновление драйвера виртуального сопроцессора для поддержки MMX технологии. Обновлена утилита Dxsetup.exe – возможность “восстановления” аудио или видео драйвера отдельно.

DirectInput - специальная программа управления джойстиком

DirectSound - появился свой API

DirectX 3.0a

1996
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

небольшие корректировки в части поддержки MMX технологии

DirectX 3.0b

1996
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

исправление ошибок, выявленных в японской версии Windows.

DirectX 4.0

Продукта под таким номером не существует. По неизвестным, и так толком не раскрытым причинам, разработчики отказались от его выпуска.

DirectX 5.0

1997
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

новая панель управления для игровых контроллеров, существенно улучшенная поддержка технологии MMX и улучшенный интерфейс управления для пользователя.

DirectInput - ряд нововведений, такие как поддержка игровых контроллеров с обратной связью – feedback

DirectSetup - перед обновлением драйверов рекомендует и сообщает обо всех ситуациях.

Этот набор изначально входил в состав Windows 98. Он поддерживает в этой системе работу с несколькими мониторами одновременно.

DirectX 5.2

1997
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

исправления некоторых мелких ошибок

DirectPlay - новая версия

DirectX 6.0

1998
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectPlay

добавлена новая панель управления DirectX
повышено быстродействие MMX и добавлена поддержка технологии 3DNow! фирмы AMD.

DirectDraw
        - оптимизация скорости
        - новые интерфейсы

Direct3D
        - Значительно более быстрая работа вследствие усовершенствования компонентов.
        - Полностью переписан геометрический движок. Теперь он использует все возможные новшества
          процессоров.
        - все новые программные растеризаторы, позволяющие разработчикам сравнить визуальное качество
          вывода на трехмерных ускорителях, приведены к стандарту.
        - поддержка однопроходного мультитекстурирования, bump mapping’а, сжатие текстур, stencil buffer,
          w-buffer и многое другое

DirectSound
        - оптимизация скорости в Windows 95, используя технологию MMX

DirectPlay
        - новые услуги lobbying
        - поддержка firewalls

Очень примечательно, что шестая версия содержит интерфейсы с цифрой четыре на конце. В стандартной справке указывается, что это не обман зрения или шутка. Вот дословный перевод пояснения: “Обратите внимание, что нет никакого DirectX 4, цифра перескочила с версии три сразу на пятую”. Несуразность и только. Видимо разработчики, заранее предвидели неоднозначную реакцию, если даже не поленились оставить такую надпись.

DirectX 6.1

февраль 1999
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectMusic, DirectPlay

включает в себя новый API DirectMusic, запланированный еще в версии 6.0

DirectDraw
        - Включение командных буферов AGP
        - Поправлен ModeX для компьютеров с AGP

Direct3D
        - улучшена работа DX5 Ramp rasterizer
        - улучшена поддержка видеопамяти для vertex buffers
        - улучшена поддержка PowerVR
        - драйверы, осуществляя ValidateDevice, могут прочесть формат текстуры
        - Directional и Spot освещение работают правильно на Pentium II
        - Multitexture stage более точен
        - Ramp Rasterizer использует B (синий) канал для полутонов вместо среднего значения.
        - Вершинный туман работает со SPECULARENABLE, выставленным в false
        - ramp rasterizer поддерживает копирование в 16 битном режиме
        - Multitexture stage более точен
        - новый флаг в CAPS, отвечающий за поддержку текстур размеры, которых не равны степени двойки

DirectPlay
        - Доступ преобразован в последовательную систему, так как системная служба могла посылать
          множественные блоки данных одновременно, в результате этого теряя соединение.

Безусловно, самым главным новшеством в следующем выпуске был TnL. Поддержка аппаратного преобразования и освещения.

DirectX 7.0

сентябрь 1999
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectMusic, DirectPlay

DirectDraw
        - поддержка стерео вывода на активное устройство.
Direct3D
        - (TnL) - поддержка аппаратной трансформации объектов и их освещения.
        - (Environment mapping, cubic environment maps) - отображение среды с использованием кубических карт
          среды.
        - (Geometry Blending) – смешивание геометрии.
        - (Device-state blocks) – возможность создания блоков команд с последующей их компиляцией для более
          быстрого и оптимального выполнения устройством
        - Улучшенное управление текстурами.
        - поддержка стерео вывода на активное устройство.
        - Усовершенствованная программная эмуляция. Использование самых современных наборов
          расширенных инструкций процессоров, таких как MMX и 3D-Now!

DirectInput
        - поддерживает до 8 клавиш мыши
        - эксклюзивный доступ до клавиатуры
        - поддержка force-feedback
        - поддержка единой модели Windows драйверов (WDM).

DirectSound
        - добавлена поддержка аппаратного управления голосовыми функциями.
        - новые алгоритмы обработки 3D – Audio меньше нагружают процессор

DirectSound
        - поддержка Downloadable Sounds второго уровня

DirectPlay
        - улучшена производительность

После выпуска седьмой версии были обнаружены проблемы с поддержкой устройств USB. DirectInput содержал недостатки, из-за которых последующие интерфейсы работали немного по другому, чем в предыдущих версиях. Зная это, в Microsoft исправили компонент и повторно выпустили эту же версию, добавив букву к названию.

DirectX 7.0a

19 декабря 1999
Основные компоненты: DirectDraw, Direct3D, DirectInput, DirectSound, DirectMusic, DirectPlay

DirectInput
        - улучшена совместимость с USB устройствами
        - исправлен недостаток при получении эксклюзивного доступа к устройствам в некоторых случаях.
        - улучшена работа обратной связи.

Следующий выпуск, буквально, перевернул все с ног на голову. Еще бы. Привычный всем DirectDraw упразднен. Совмещение данного компонента с Direct3D вызвало бурную реакцию общественности. Простой способ доступа до видеопамяти буквально отняли, решив, что 2D графику с успехом можно реализовать через 3D. Это был не совсем удачный шаг, многие отвернулись от DirectX, и перешли на OpenGL. Из положительных сторон было введение шейдерных программ, с помощью которых появилась возможность достигать поистине удивительных результатов.

DirectX 8.0

9 ноября 2000
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

для упрощения разработки приложений совмещены входы в DirectDraw и Direct3D.
для упрощения разработки приложений совмещены входы в DirectSound и DirectMusic.
плагин для экспорта skinned мешей, использующих высокоуровневые поверхности и LOD геометрию в
        различных разрешениях.
расширены возможности библиотеки D3DX

DirectGraphics
        - язык программирования обработки пикселей, позволяет написать шейдерные программы для
          попиксельного освещения, environment mapping и bump mapping
        - язык программирования обработки вершин, позволяющий написать шейдерные программы для skinning,
          morphing и tweening анимации, процедурной геометрии, а также пользовательского освещения модели.
        - Multisample рендеринг производит полноэкранное сглаживание, depth-of-field и motion blur
        - 3D текстуры ослабляют диапазон освещения в попиксельном освещении и объемных атмосферных
          эффектах.
        - точечные спрайты позволят представить искры, дождь, снег и т.д.
        - поддержка высокоуровневых примитивов
        - поддержка индексного смешивания вершин (Indexed vertex blending)
        - введение эффектов, которые, будучи написанными в ASCII коде, не требуют компиляции.

DirectInput
        - улучшено отображение устройств для упрощения работы с ними.

DirectPlay
        - улучшено масштабирование и производительность, а также добавлена поддержка передачи голоса

DirectShow
        - добавлена поддержка формата Windows Media Audio и Video (WMA и WMV), а также введена поддержка
          редактирования аудио и видео файлов в реальном времени, т.е. timeline direct playback.

Кроме этого, в DirectX 8 версии фактически была завершена замена интерфейса Video for Windows на DirectShow и обновлены практически все аудио и видео кодеки Windows, которые до 8 версии в DirectX просто не входили.

DirectX 8.0a

24 января 2001
исправления, связанные с установкой международных версий на Windows 2000
исправлены некоторые проблемы с устройствами ввода

DirectX 8.0b

12 апреля 2001
Выпуск этой версии содержал исправление более чем 25 ошибок в библиотеке D3DX.

DirectX 8.1

8 ноября 2001
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

утилита MeshView для загрузки мешей и работы с ними.
расширены возможности библиотеки D3DX
новые примеры

DirectGraphics
        - новые версий шейдеров 1.2, 1.3 и 1.4

D3DX
        - дополнительные функции в Mesh API.
        - поддержка прогрессивных мешей.
        - дополнительные функции для работы с BumpMapping.
        - введен высококачественный алгоритм сжатия DXTn текстур
        - с помощью D3DXGetImageInfoFrom теперь возможно получить информацию о текстуре до ее загрузки
        - поддержка динамических текстур
        - D3DXSurfaceToFile поддерживает 8-битные .bmp и 24-битные RGB .dds файлы всех форматов: mipmaps,
          cube maps, volumes.
        - Функции заполнения текстур.
        - новые математические функции

DirectX 8.1a

2001
Нет данных

DirectX 8.1b

2001
Нет данных

Выпуску DirectX версии 9 предшествовали многочисленные предварительные версии, именуемые Release Candidate. Всего вышло три версии: RC0, RC1 и RC2.

DirectX 9.0

19 декабря 2002
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

новые утилиты

DirectGraphics
        - вершинные и пиксельные шейдеры создаются как COM объекты
        - vertex streams создаются с декларацией
        - изменения вертексных шейдеров и закрепление декларации vertex stream
        - scissor тест
        - сглаживание линий
        - поддержка режима генерации sphere map texture
        - поддержка карт смещения
        - улучшена поддержка перечисления устройств

DirectSound
        - максимальная частота звуковых буферов увеличена со 100 до 200 kHz там, где это поддерживается
          операционной системой
        - DSBCAPS_CTRLFREQUENCY и DSBCAPS_CRTLFX могут использоваться вместе.
        - аудиоформаты, определенные в WAVEFORMATEXTENSIBLE, поддерживаются всеми методами DirectSound
        - стандартный эффект DMO может обрабатывать данные в формате WAVE_FORMAT_IEEE_FLOA

DirectPlay
        - новые интерфейсы

DirectShow
        - Video Mixing Renderer Filter 9 (VMR-9).
        - новая поддержка deinterlacing в DirectX Video Acceleration
        - новая поддержка deinterlacing в цифровом декодер фильтре
        - новая спецификация кодирующего API
        - расширена утилита GraphEdit
        - примеры

DirectX 9.0a - summer update

19 мая 2003
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

DirectGraphics
        - HLSL потоковый контроль
        - PRT: Precomputer Radiance Transfer. Техника рендеринга окружающего освещения с глобальными
          эффектами, такими как межотражения, самозатенение и subsurface рассеивание
        - Tone Mapping для HDR освещения
        - нововведения связанные с анимацией

D3DX
        - Интерфейсы Font и Sprite пополнились дополнительными опциями

Выпуск 9.0а снова сопровождался ошибками, которые быстро исправили. Согласно слухам, были исправлены проблемы с драйверами Catalyst, приводившие к заметному падению производительности.

DirectX 9.0b - summer update

июль 2004
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

DirectGraphics
        - отрисовка множества геометрии осуществляются более эффективно
        - усовершенствованная система эффектов включает preshaders и parameter blocks
        - поддержка шейдерной модели 3.0

Как поговаривают, причиной для релиза 9.0b послужила необходимость закрыть дырку в системе безопасности приложения.

DirectX 9.0c - october update

октябрь 2004
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

DirectGraphics
        - новые примеры
        - новые разделы в документации

D3DX
        - контроль за выводом отладочных сообщений

Начиная с этого апдейта, было принято решение осуществлять подобные выпуски каждые два месяца.

DirectX 9.0c - december update

декабрь 2004
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

новые примеры

D3DX
        - PRT: поддержка адаптивной подповерхности, моделирующей рассеивание; новый callback для
          информации о статусе CPCA сжатия; новые методы, позволяющие вычислять произвольную пару
          точка/нормаль в пространстве
        - разработчики могут определить минимальное и макисмальное расстояние между объектами при PRT
          моделировании

DirectX 9.0c - february update

февраль 2005
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

Windows 2000 больше не поддерживается
все DirectShow компоненты перенесены в Extras
новые примеры
добавки в утилитах
релиз D3DX как динамической библиотеки
D3DX для DirectX 8 удален

D3DX
        - PRT: новые быстрые raytraсing методы для прямого вычисления пересечения луча со сценой
        - оптимизированы математические функции для X64
          поправлен HLSL компилятор
          новые функции для работы с эффектами

DirectX 9.0c - april update

апрель 2005
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

D3DX
        - UVAtlas API (автоматическая генерация уникального UV текстурного маппинга для управляемого меша)
        - Новый флаг D3DXFX_NOT_CLONEABLE
        - PRT (небольшие поправки)

DirectX 9.0c - june update

июнь 2005
Основные компоненты: DirectX Graphics, DirectInput, DirectSound, DirectMusic, DirectPlay, DirectShow

PIX
        - UVAtlas API (автоматическая генерация уникального UV текстурного маппинга для управляемого меша)
        - Новый флаг D3DXFX_NOT_CLONEABLE
        - PRT (небольшие поправки)

Заключение

Дальнейшее будущее DirectX уже определено. С выходом бета версии новой операционной системы в этом году известной как Longhorn, DirectX 9 утратит название и будет переименован в WGF (Windows Foundation Classes). Во многом, эти изменения вызваны новой концепцией работы с различными устройствами и в том числе с графическими ускорителями — выход следующей версии DX неразрывно связан с новым ядром новой ОС и, наиболее вероятно, что мы вообще не увидим этот API на предыдущих системах (XP, 2000 и иже). Сейчас Microsoft не имеет специального консультационного совета по выработке облика будущего стандарта, в отличие, например, от ежемесячных сборов коллегии Architecture Review Board (ARB), согласовывающих новые версии OpenGL. В данный момент решения о спецификациях очередного стандарта графики DirectX принимаются в Microsoft после консультаций с разработчиками оборудования и программного обеспечения как попытка прийти к компромиссу между противоречивыми требованиями. К выходу новой версии Windows, процесс принятия решений планируется улучшить, создав консультационную организацию Windows Graphics Foundation, которая и выработает новый облик графического стандарта WGF 1.0. Конечно, произойдет это еще не скоро, предположительно, в конце 2006 года. Прочие знакомые нам компоненты название DirectX сохранят, но к 3D-графике более относится не будут. Выяснилось, что для разработчика больше не будет разницы между пиксельными и вертексными шейдерами - их заменит Common Shader Core, который будет управляться с обоими видами операций. Дэвид Блайт (David Blythe), из команды разработчиков DirectX, также отметил, что через этот же интерфейс смогут работать и другие шейдеры, если они появятся. Уточнить, что же может появится, он отказался. Возможно там же будут доступны просчеты столкновений, и, что более интересно - расчеты физические. Мысли о том, как хорошо было бы использовать могучие силы GPU по работе с числами с плавающей запятой для моделирования течения жидкостей и движений облаков газов, ходят давно, теперь, возможно, это будет реализовано.

Еще одна интересная новинка - GPU будет поддерживать многозадачность. Таким образом, сразу несколько приложений смогут использовать 3D-графику и это будет вполне нормально работать, для этого обещается поддержка нормальной вытесняющей многозадачности для GPU.

В целях повышения устойчивости системы планируется перенести большую часть обработки графики в пользовательский режим. Это продолжает концепцию Longhorn Display Driver Model (LDDM), направленную на упрощение драйверов GPU, достижение многозадачности GPU, переход в "нормальный" графический режим в ранней стадии загрузки системы, обновление драйверов графических процессоров без перезагрузок и поддержку PCI-Express.

WGF также виртуализирует память GPU, таким образом, контроллер памяти GPU сможет обращаться как к своим локальным ресурсам, так и к специально выделенной области памяти.

В то же время, из API будут изъяты такие возможности, как вертексное освещение, дым, альфа тест, пойнт-спрайты и некоторые другие. Вместо них рекомендуется использовать шейдеры. Однако и расширения в API планируются очень серьезные. С учетом того, что технология Avalon из Longhorn очень сильно зависима от 3D-графики, Microsoft придется приложить немало усилий на пути превращения 3D-графики для игроков и разработчиков, и избежать при этом падения стабильности системы.
copyright © 2003-2006 keYMax
   © 2003-2006 keYMax
   Полное или частичное воспроизведение материалов сайта возможно только с разрешения автора
Компьютеры
Hosted by uCoz