ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


Интерфейсы и классы - часть 13


На Рисунок 3-3 изображена иерархия классов библиотеки 3dPlus. Я не стал включать в нее классы, относящиеся непосредственно к программному слою DirectDraw. Все классы на Рисунок 3-3 относятся к абстрактному режиму Direct3D.

Классы библиотеки делятся на три группы: производные непосредственно от C3d0bject, производные от C3dVisual и производные от CSdFrame. Если вы посмотрите на иерархию Direct3D, изображенную на Рисунок 3-1 на стр. 65, то увидите, что эти две иерархии во многом схожи. Основное отличие между ними заключается в том, что я сделал некоторые классы производными от C3dFi-ame, чтобы объекты этих классов могли иметь собственное положение и направление и при этом выступать в роли визуальных элементов. Следовательно, по отношению к интерфейсам это означает, что классы, производные от CSdFrame, используют оба интерфейса — IDirect3DRMFrame и IDirecGDRMVisual. Давайте кратко познакомимся с классами 3dPlus, узнаем их назначение и в отдельных случаях посмотрим, как ими пользоваться.

C3dEngine

Класс C3dEngine объединяет несколько глобальных функций механизма визуализации. Библиотека классов 3dPlus содержит всего один глобальный объект этого класса с именем the3dEngine. Функции данного класса чаще всего используются для создания других объектов, относящихся к механизму визуализации, и возвращают указатель на интерфейс. Обычно вам не придется непосредственно пользоваться этим классом в своих приложениях, однако при создании объектов других классов нередко применяется код C3dEngine. В приведенном ниже примере показано, как работают с объектом the3dEngine:

74 ¦¦у Глава 3. Интерфейсы и классы

Рисунок. 3-3. Иерархия классов библиотеки 3dPlus


Библиотека классов 3dPlus

BOOL C3dFrame::Create(C3dFrame* pParent)

{

if (m_plFrame) {

m pIFrame-»Release () ;

m_plFrame = NULL;

}

if (!the3dEngine.CreateFrame(_GetRef(pParent), &m_plFrame)) (

TRACE ("Frame create failedW);

m_plFrame = NULL;

return FALSE;

} ASSERT(m_plFrame) ;

m_pIFrame-»SetAppData ( (ULONG) this) ;




Начало  Назад  Вперед



Книжный магазин