API (программный интерфейс) - интерфейс для написания программ, поддерживаю-
щий оборудование определенного типа и операционную систему. 3D API позволяет
программисту создавать трехмерное программное обеспечение, использующее все
возможности 3D-ускорителей. API обычно включают в себя функции, глобальные
данные, константы и другие элементы, позволяющие разработчику избегать непо-
средственного взаимодействия с оборудованием.
3D API делятся на универсальные и специализированные. Универсальный 3D API
позволяет абстрагироваться от конкретного оборудования. Без универсального
API, поддерживающих широкий спектр 3D-ускорителей, разработчиками пришлось
бы портировать игры под множество плат. Hаиболее известные универсальные 3D
API - OpenGL и Direct3D. Специализированный 3D API предназначен для одного
конкретного семейства 3D-ускорителей и ограждает программиста от низкоуров-
него программирования с помощью прямого доступа к регистрам и памяти. Приме-
ры специализированных 3D API - Glide (от 3Dfx), RRedline (от Rendition),
PowerSGL (от Videologic), RenderGL (от Intergraph).
Direct3D - 3D API компании Microsoft, предназначенный для использования пре-
имущественно в играх. Direct3D существует только в Windows 95, в скором бу-
дущем появится в Windows NT 5.0. Direct3D имеет два режима: RM (retained
mode) или абстрактный и IM (immediate mode) или непосредственный. IM состоит
из тонкого уровня, который общается с аппаратурой и обеспечивает самое высо-
кое быстродействие. Абстрактный режим - высокоуровневый интерфейс, покрываю-
щий множество операций для программиста, включая инициализацию и трансформа-
цию. У обоих режимов есть достоинства и недостатки, большинство Direct3D-игр
используют IM.
OpenGL - открытый 3D API, созданный компанией SGI и контролируемый ассоциа-
цией OpenGL Architecture Review Board, в которую входят DEC, E&S, IBM,
Intel, Intergraph, Microsoft и SGI. OpenGL реализует широкий диапазон функ-
ций от вывода точки, линии или полигона до рендеринга кривых поверхностей
NURBS, покрытых текстурой.
Использование универсального 3D API предполагает использование драйверов для
этого API. Hа сегодняшний день наличие драйверов Direct3D и OpenGL является
обязательным требованием ко всем 3D-ускорителям.
Direct3D-драйвер реализует так называемый уровень аппаратной абстракции, HAL
(Hardware Abstraction Layer) - интерфейс, который взаимодействует непосред-
ственно с оборудованием и позволяет приложениям использовать возможности
3D-ускорителя с маскимальным быстродействием. HAL имеет низкоуровневый дос-
туп к 3D-чипу и реализует 3D-функции на аппаратном или программно-аппаратном
уровне. В отличие от HAL, уровень эмуляции, HEL (Hardware Emulation Layer)
является программным растеризатором.
OpenGL-драйвер может быть реализован в двух вариантах: как ICD и как MCD.
ICD (Installable Client Driver) полностью включает все стадии конвейера
OpenGL, что дает максимальное быстродействие, но ICD довольно сложно прог-
раммировать. MCD (Mini Client Driver) разработан для внесения абстракции в
конвейер OpenGL. MCD гораздо легче программировать, так как разработчик
программирует только те участки кода драйвера, которые он считает нужным оп-
тимизировать для своего чипсета. Однако MCD уступает ICD в быстродействии,
плюс ко всему MCD работает только в Windows NT. Для широкого внедрения
OpenGL на платформе Windows 95 сейчас разрабатывается 3D Graphics Device
Driver Kit (Комплект разработчика драйверов устройств для 3D-графики). Hовый
DDK будет включать переработанный SGI ICD DDK и Direct3D DDK и позволит пос-
тавщикам графических микросхем и плат разрабатывать OpenGL-драйвера для Win-
dows 95, Windows NT 4.0, а также Windows 98 и Windows NT 5.0.
|