Использование OpenGL

1 АНАЛИЗ ВЫБРАННОГО ИНСТРУМЕНТАРИЯ

1.5 Основные характеристики Direct3D

Система Direct3D (как и всё семейство DirectX) построена на основе COM - составной объектной модели (Component Object Model), технологии, которая используется подсистемой связывания и внедрения объектов (OLE/ActiveX). COM-объекты при программировании на C++ играют ту же роль, что и библиотеки динамической компоновки (DLL) при программировании для Windows на языке C. Это не означает, что COM-объекты могут использоваться только в приложениях, написанных на C++, однако, в программах, написанных на C, при обращении к интерфейсу COM-объекта, необходимо явно указывать, что вызов функции производится посредством таблицы указателей (аналог vtable для виртуальных функций классов C++).

Интерфейс Direct3D, в отличие от других API для программирования 3D графики, состоит из нескольких уровней:

Кроме того, "непосредственный режим", начиная с версии DirectX 5.0, фактически включает в себя два абсолютно независимых набора функций, предоставляющих одни и те же функции для работы с 3D графикой на низком уровне:

Имеет смысл остановиться только на "непосредственном режиме" Direct3D, т. к. именно он предоставляет основные возможности для реализации приложений 3D графики и эффективной работы с 3D ускорителями, в то время, как "абстрактный режим" предоставляет набор "надстроек" над основным набором функций.

Библиотека Direct3D постоянно изменяется и расширяется с целью поддержки всех возможных ускорителей новых наборов инструкций. Первые версии библиотеки Direct3D были недостаточно хорошо продуманными, вследствие чего, начиная с версии DirectX 5.0, используется полностью новый подход (Draw Primitives). Новые возможности библиотеки часто заимствуются из расширений библиотеки OpenGL, например, мультитекстурирование или буфер трафарета. Текущая версия библиотеки Direct3D - 8.0