Библиотека реализована в виде совокупности СОМ-объектов, но для демонстрации вывода примитивов достаточно использовать модули Di rect3D9 и Direct3DDevice9.

Методы объекта Di rect3D9 позволяют определить количество графических адаптеров, текущее состояние аппаратуры, а также возможности конвейера при программной или аппаратной реализации. Функции графических ускорителей не стандартизованы. Так, например, не все ускорители поддерживают работу с оверлейными поверхностями, хотя она была даже в обычном видеоадаптере S3 Trio. При помощи метода объекта Di rect3D9 можно организовать проверку возможностей аппаратуры.

Работа с библиотекой начинается с создания объекта Di rect3D9 и получения указателя на его интерфейс I Di rect3D9 функцией Di rect3DCreate9( ). После этого при помощи метода CreateDeviceO интерфейса IDirect3D9 создается объект Di rect3DDevi се9. Его интерфейс IDi rect3DDevi се9 содержит множество методов, обеспечивающих формирование изображения. Они позволяют обеспечить вывод примитивов, определение размера текстурной памяти и создание текстур, задание уровня доступа к экрану. Инициализация библиотеки, собственно, и выполняется вызовом метода CreateDeviceO. Этому методу передается структура D3DPRESENT_PARAMETERS, задающая формат пиксела, размер и количество буферов, уровень доступа к экрану и иные важные параметры.

По мере роста роли графики в организации человеко-машинного интерфейса аппаратные средства обеспечивают все более широкий набор графических функций. При этом развитие шло в двух направлениях. Так разработчики добивались расширения возможностей основного процессора. В качестве примера можно указать архитектуру ММХ, команды которой были использованы нами при обработке растрового изображения, или команды AMD 3DNow! процессоров фирмы AMD,

Применение библиотеки DirectX

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

При создании Di rect3DDevice9 можно выбрать один из стандартных вариантов реализации конвейера. Если при создании объекта Di rect3DDevice9 его тип указан константой D3DDEVTYPE_REF, то библиотека не использует аппаратной поддержки ускорителя, но в зависимости от типа процессора применяет команды 3DNow! для ускорения геометрических преобразований и команды ММХ при растровой развертке примитивов. Если же тип указан константой D3DDEVTYPE_HAL, то библиотека использует аппаратную поддержку тех функций, которые может выполнять графический ускоритель. Еще один параметр при выборе D3DDEVTYPE_HAL позволяет оставить основному процессору геометрические преобразования и расчет освещения, а растровые операции передать ускорителю.


⇐ Предыдущая| |Следующая ⇒