Программирование графики с использованием Direct3D

       

Разработка классов


Давайте отвлечемся от COM-интерфейсов Direct3D и поговорим о классах C++. Мы будем применять классы C++ для управления сложностью программ. Эти классы не являются заменой интерфейсов Direct3D. Классы C++ будут содержать интерфейсы Direct3D и управлять ими.

Программы из этой книги используют библиотеку MFC. Стратегия состоит в использовании функциональности MFC без поддержки архитектуры документ/представление. Мы воспользуемся двумя классами MFC: CWinApp и CFrameWnd. Класс CWinApp представляет приложение Windows, а класс CFrameWnd представляет окно приложения. Класс CWinApp будет применяться как базовый для класса конкретного приложения, а класс CFrameWnd будет базовым для класса окна конкретного приложения Direct3D. Класс, производный от CWinApp мы назовем RMApp (RM от Retained Mode), а класс, производный от CFrameWnd соответственно назовем RMWin.

Однако, мы не станем помещать всю функциональность приложения в эти два класса. Вместо этого в них мы поместим стандартную функциональность Direct3D — те функции, которые остаются неизменными от приложения к приложению. Затем мы создадим еще два класса, в которые поместим код, специфичный для данного приложения. Имена этих классов вы можете задать сами (мастер создания приложений предложит вам стандартные варианты названий, но вы можете изменить их). Для рассматриваемого в этой главе приложения Sample мы назовем эти классы SampleApp и SampleWin. Рис. 4.5 представляет дерево наследования для классов нашего приложения.


Рис. 4.5. Функциональность классов и наследование

На рисунке изображены четыре класса, о которых еще ничего не говорилось: CObject, CCmdTarget, CWinThread и CWnd. CObject — это базовый класс MFC. Почти каждый класс MFC является производным от CObject. Класс CCmdTarget реализует большую часть предоставляемых MFC возможностей обработки сообщений. Производные от CCmdTarget классы наследуют возможность использования карт сообщений. Класс CWinThread предоставляет поддержку многопоточности. Класс CWnd — это класс окна в MFC, обеспечивающий поддержку большинства функций окна.



Содержание раздела