Трехмерная графика в проекте ATL


Трехмерная графика в проекте ATL
Трехмерная графика в проекте ATL Требования OpenGL Введение обработчиков сообщений Windows Управление цветом фона Подготовка сцены OpenGL Файловые операции Установка освещения Реа...
Страницы свойств
Страницы свойств Перед тем как мы начнем работать с окном СОМ-объекта, вводя в него реакции на управляющие воздействия, покажем, как добавить страницу свойств (property page) в уже существующий...
Конструируем облик страницы свойств
Конструируем облик страницы свойствВажным моментом в том, что произошло, когда вы добавили страницу свойств, является появление шаблона окна диалоговой вставки IDD_PROPDLG. Сейчас вам следует с...
Вид новой вставки в блоке страниц свойств элемента ActiveX
Рисунок 9.2. Вид новой вставки в блоке страниц свойств элемента ActiveX На рисунке показано окно диалога в активном состоянии, но вам еще предстоит поработать, чтобы довести его до этого вида....
Таблица 9 1 Идентификаторы элементов управления
Таблица 9.1. Идентификаторы элементов управления Элемент Идентификатор / Диалог IDD_PROPDLG...
Взаимодействие классов
Взаимодействие классовКласс CPropDlg должен обеспечить реакцию на изменение регулировок, а класс COpenGL должен учесть новые установки и перерисовать изображение. Общение классов, как мы уже от...
Внедрение элемента ActiveX в окно диалогового приложения
Рисунок 9.3. Внедрение элемента ActiveX в окно диалогового приложения В отличие от Visual Studio б в конце этой процедуры в состав проекта (по умолчанию) не будет включен новый класс-оболочка (...
Классоболочка
Класс-оболочкаОбычно при создании приложения-контейнера для элемента ActiveX придерживаются следующей стратегии: Вставляют уже зарегистрированный элемент ActiveX в форму приложения контейнера...
Управление с помощью объекта классаоболочки
Управление с помощью объекта класса-оболочкиДля управления внедренным элементом ActiveX надо ввести в существующий диалоговый класс CTestGLDlg объект (переменную типа) класса-оболочки. Этот шаг...
Таблица 9 2 Идентификаторы элементов управления
Таблица 9.2. Идентификаторы элементов управления Элемент Идентификатор Диалог IDD_TESTGL_DIALOG...
Требования OpenGL
Требования OpenGLВместо тестового изображения с надписью ATL 4.0, которым мы научились кое-как управлять, поместим в окно СОМ-объекта OpenGL-изображение поверхности в трехмерном пространстве....
Введение методов в интерфейс IOpenGL
Введение методов в интерфейс IOpenGL На этом этапе важно решить, какие данные (свойства) и методы класса будут экспонироваться СОМ-объектом, а какие останутся в качестве служебных, для внутрен...
Ручная коррекция класса
Ручная коррекция класса Класс COpenGL будет обслуживать окно внедренного СОМ-объекта. Он должен иметь достаточное количество данных и методов для управления изображаемой поверхностью, поэтому...
Рисуем четырехугольниками m_bQuad = true;
Рисуем четырехугольниками m_bQuad = true; //====== Начальный значения параметров освещения m_LightParam[OJ = 50; // X position m_LightParam[l] = 80; // Y position m_LightParam[2] = 100; // Z p...
Управление цветом фона
Управление цветом фона Возможность изменять цвет фона окна OpenGL удобно реализовать с помощью отдельного метода класса:void COpenGL::SetBkColor() { //====== Расщепление цвета на три компон...
Подготовка сцены OpenGL
Подготовка сцены OpenGL Считая, что данные о координатах точек изображаемой поверхности уже известны и расположены в контейнере m_cPoints, напишем коды функции DrawScene, которая создает изобра...
Файловые операции
Файловые операцииСоздание тестовой поверхности, чтение данных из файла и хранение этих данных в контейнере мы будем делать так же, как и в проекте MFC. Для разнообразия используем другую форму...
Установка освещения
Установка освещения Параметры освещения будут изменяться с помощью регуляторов, которые мы разместим на новой странице блока Property Pages. Каждую новую страницу этого блока принято реализовыв...
Окно ActiveX элемента внедренного
Рисунок 9.1. Окно ActiveX элемента, внедренного в окно тестового контейнера STDMETHODIMP COpenGL::GetFillMode(DWORD* pMode) { //======= Режим заполнения полигонов *pMode = m_FillMode; return...


- Начало -