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



Расставляем декорации - часть 15


Окна, ракурсы и устройства

49

BOOL C3dWnd::CreateStage()

// Инициализировать объект DirectDraw if (!m_pDD) {

m pDD = new CDirectDraw;

} if (!m_pDD->Create()) return FALSE;

// Установить экранный режим для окна if ( !m_pDD->SetWindowedMode (GetSafeHwnd () ,

m_iWidth,

m_iHeight)) { return FALSE;

}

// Создать объект Direct3D if (!m_pD3D) {

m_pD3D = new CDirect3D;

} if (!m_pD3D->Create(m_pDD)) return FALSE;

// Задать цветовую модель if (!m_pD3D->SetMode(m_ColorModel)) return FALSE;

// Создать сцену if (!m_pStage) {

m_pStage = new C3dStage;

} if (!m_pStage->Create(m_pD3D)) return FALSE;

// Присоединить текущий макет m pStage->SetScene(m_pScene);

return TRUE;

}

Первая половина функции C3dWnd::CreateStage посвящена созданию объектов DirectDraw и Direct3D, предоставляющих основу для рисования трехмерных объектов в окне. Затем мы выбираем оконный режим для объекта DirectDraw (в отличие от полноэкранного режима) и задаем монохромную цветовую модель MONO для объекта Direct3D (цветовые модели рассматриваются в главе 10). Несколько последних строк создают объект C3dStage по объекту DirectDraw и присоединяют текущий макет к сцене. В свою очередь, объект-сцена C3dStage содержит объекты C3dDevice (устройство) и C3dViewport (ракурс), которые отвечают за взаимодействие с компонентами DirectDraw и Direct3D. Кроме того, сцена содержит объект C3dCamera; мы рассмотрим его ниже. Функция, в которой происходит фактическое создание сцены по объекту Direct3D, выглядит следующим образом:

50 ВД!8' Глава 2. Расставляем декорации

BOOL C3dStage::Create(CDirect3D* pD3D)

{

// Удалить существующий макет SetScene(NULL) ;

// Создать новое устройство по поверхностям Direct3D if (!m_Device.Create(pD3D)) return FALSE;

// Задать качество m Device.SetQuality(m_Quality);

// Создать ракурс if (!m_Viewport.Create(&m_Device,

&m Camera,

0,~0,

m_Device.GetWidth(),

m_Device.GetHeight())) ( return FALSE;

}

return TRUE;

Как видите, приведенная выше функция сводится к построению объектов C3dDevice и CSdViewport. Чтобы создать устройство, мы вызываем соответствующую функцию Direct3D и передаем ей указатель на используемые компоненты DirectDraw:




Содержание  Назад  Вперед