Direct 3D Retained Mode (RM) как набор интерфейсов для работы с трехмерной графикой. Его использование для загрузки сеток, расположения источников освещения и оживления полученной сцены. Инициализация указателей и устройств, моделирование объектов.
Аннотация к работе
Direct 3D Retained Mode (Абстрактный режим) - это набор интерфейсов для работы с трехмерной графикой. С помощью этого набора интерфейсов можно манипулировать сетками (это другое название моделей и объектов), источниками освещения, камерами, а также фреймами. Последние обеспечивают мощный механизм для быстрого построения и манипулирования сценами. Поэтому, Retained Mode (далее просто RM) предназначен для работы непосредственно со сценой, а Непосредственный Режим (Immediate Mode) предназначен для вывода текстурированных треугольников. Используя, RM Вы сможете загрузить сетки, расположить источники освещения и оживить полученную сцену.
RM очень распространенный набор интерфейсов, скорее всего он есть на всех компьютерах с Windows 9x, NT, Me, 2000, так как RM входил в состав DIRECTX до версии 7. RM не модернизировался фирмой Microsoft после выхода DIRECTX v6.1, но был в составе DIRECTX v7, как часть DIRECTX Media. Предполагалось, его заменит компонент Fahrenheit Scene Graph (FSG) в составе графической библиотеки Fahrenheit. Но этого не произошло. Тем не менее, RM не потерял привлекательности, так как в составе DIRECTX пока нет другого набора высокоуровневых интерфейсов для работы с трехмерной графикой на уровне сцены.
Описание основных интерфейсов RM.
Надеюсь, Вы знаете, как программировать на Си с помощью Microsoft Visual C v4 или выше. Если нет, то Вам будет трудно понять эту статью. Также я предполагаю, что Вы знаете, как работают COM-объекты, так как все интерфейсы RM реализованы на этой основе. Начальные знания по трехмерной графике тоже будут не лишними.
Главный интерфейс RM называется Direct3DRM. Он позволяет создавать другие интерфейсы RM и выполнять ряд сервисных функций. В частности связывать RM с устройствами для вывода графики.
Интерфейс для работы с устройствами Direct3DRMDEVICE. Устройства - это фактически драйвера видеокарт. Есть два основных типа устройств RM: программные и аппаратные. Первые выполняют трехмерные расчеты на центральном процессоре компьютера, а вторые используют специализированный графический процессор на видеокарте, что обеспечивает несравненно более быстрый вывод графики.
Помимо этого, программные и аппаратные устройства поддерживают две цветовых модели Ramp и RGB. Ramp - обеспечивает только монохромное освещение, RGB - цветное. Поэтому устройства Ramp всегда быстрее, чем RGB. Обычно имеется не менее трех устройств: Ramp, RGB программные устройства и аппаратное устройство.
Интерфейс Direct3DRMWINDEVICE позволяет RM сообщаться с Windows. Он проделывает «непонятную», но необходимую работу.
Интерфейс Direct3DRMVIEWPORT позволяет создавать области просмотра, т. е. по-другому говоря камеры, посредством которых мы, и созерцаем трехмерный мир.
Интерфейс Direct3DRMFRAME позволяет работать с фреймами. Фреймы - это точки првязки объектов в пространстве, а не кадры в анимациию. Direct3DRMFRAMEОСНОВНОЙ интерфейс RM. Именно он позволяет создавать сцены и эффективно с ними работать. С помощью фреймов можно связывать группы объектов и легко ими манипулировать. Фрейм позволяет привязать сетку или источник освещения к определенному месту в пространстве. К фрейму можно привязать другие фреймы и перемещая главный фрейм, будут перемещаться и связанные фреймы. Т. е. фреймы позволяют обеспечить прямую кинематику, но, к сожалению, инверсной кинематики фреймы не обеспечивают.
Интерфейс конструктора сеток Direct3DRMMESHBUILDER еще один очень важный и полезный интерфейс. Он позволяет загружать и сохранять сетки, задавать параметры визуализации, перемещать и масштабировать сетки. Но, к сожалению, этот интерфейс несколько медлителен, и не годиться для быстродействующих приложений.
Зато интерфейс сеток Direct3DRMMESH предназначен для увеличения быстродействия, но очень не прост в «общении». Он позволяет изменять внешний вид сетки (форму и закраску). Для этого используется группа граней внутри сетки. С помощью этого интерфейса можно создавать сетку непосредственно в приложении и манипулировать ее формой, например, для морфинга.
Сетки состоят из граней. Интерфейс для работы с ними Direct3DRMFACE. Это не высокоуровневый интерфейс, он предназначен для «тонкой» работы над сеткой (на уровне вершин граней). Рассмотренные три последних интерфейса позволяют эффективно оперировать с сетками на любом уровне работы с сеткой.
Следующие три интерфейса позволяют «одевать» сетки, иначе бы сетка была просто набором цветных граней. Под «одеждой» я подразумеваю текстуры.
Интерфейс текстуры Direct3DRMTEXTUREПОЗВОЛЯЕТ назначить текстуры на сетку. Текстуры могут быть загружены из BMP или PPM файлов. Они могут находиться в ресурсах программы, в файлах или в памяти. Также этот интерфейс позволяет работать с декалами. Декал - это спрайт, который Вы можете добавить к сцене. С помощью них можно эмулировать дождь, снег, взрывы. Но их видно только с лицевой стороны.
Интерфейс покрытия текстурой Direct3DRMWRAP необходим, для того чтобы задать метод наложения текстуры на сетк