Трехмерная
графика в проекте ATL
- Требования OpenGL
- Введение обработчиков
сообщений Windows
- Управление цветом фона
- Подготовка сцены OpenGL
- Файловые операции
- Установка освещения
- Реализация методов интерфейса
- Страницы свойств
- Взаимодействие классов
- Управление объектом с
помощью мыши
- Создание контейнера на
базе MFC
- Класс-оболочка
В этом уроке
мы продолжим разработку DLL-модуля, который после регистрации в системе в качестве
СОМ-объекта позволит любому другому клиентскому приложению, обладающему свойствами
контейнера объектов СОМ использовать его для отображения в контексте OpenGL
трехмерного графика функции, заданной произвольным массивом чисел. Данные для
графика СОМ-объект берет из файла, на который указывает пользователь клиентского
приложения. Кроме этого, объект предоставляет клиенту возможность перемещения
графика вдоль трех пространственных осей, вращения вокруг вертикальной и горизонтальной
осей и просмотра как в обычном, так и скелетном режиме. Регулируя параметры
освещения поверхности, пользователь может добиться наибольшей реалистичности
изображения, то есть усилить визуальный эффект трехмерного пространства на плоском
экране.
Графики могут
представлять результаты расчета какого-либо физического поля, например поверхности
равной температуры, давления, скорости, индукции, напряжения и т. д. в части
трехмерного пространства, называемой расчетной областью. Пользователь объекта
должен заранее подготовить данные и записать их в определенном формате в файл.
Объект по команде пользователя считывает данные, нормирует, масштабирует и изображает
в своем окне, внедренном в окно приложения-клиента. Пользователь, манипулируя
мышью, управляет местоположением и вращением графика, а открыв стандартный диалог
Properties, изменяет другие его атрибуты.
ATL (Active
Template Library) — это библиотека шаблонов функций и классов, которая разработана
с целью упрощения и ускорения разработки СОМ-объектов. Несмотря на заявления
о том, что ATL не является альтернативой MFC, а лишь дополняет ее, побудительной
причиной разработки этой библиотеки был тот факт, что объекты СОМ, разработанные
с помощью MFC, и внедренные в HTML-документ, работали слишком медленно. Наследование
от cobject и все те удобства, которые оно приносит, обходятся слишком дорого
в смысле быстродействия, и в условиях web-страницы объекты MFC-происхождения
проигрывают объектам, разработанным с помощью COM API. В библиотеке ATL не используется
наследование от cobject и некоторые другие принципы построения классов, характерные
для MFC. За счет этого удалось повысить эффективность работы СОМ-объектов и
ускорить их функционирование даже в условиях web-страниц. Пользуясь справкой
(Help), вы, наверное, видели, что многие оконные методы реализованы не только
в классе cwnd, но и в классе cwindow. Последний является классом из иерархии
библиотеки ATL, и именно он является главной фигурой при разработке окон СОМ-объектов.