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


DirectSD - часть 7


Код программы состоит из двух основных фрагментов. Первый из них настраивает механизм визуализации, ракурс, освещение и фон. Второй фрагмент воспроизводит макет на экране. Поскольку оба фрагмента получились достаточно длинными, я разбил их на небольшие этапы и последовательно рассмотрел каждый из них. В программе используются классы из 4)айла Direct.cpp. Большая часть функций классов выглядит очень просто, поэтому я не стану рассматривать функции классов и сразу перейду к общей логике программы.

Подготовка

Начнем с краткого изучения фрагмента, в котором создаются окно и поверхности DirectDraw, а также выбирается оконный или полноэкранный режим работы:

BOOL CTestWnd::Create(TESTINFO* pti) {

// Создать объект DirectDraw m_pDD = new CDirectDraw;

BOOL b = m_pDD-»Create () ;

ASSERT(b) ;

/b> вГ Глава 13. Direct3D

// Зарегистрировать класс для тестового окна

CString strClass =

AfxRegisterWndClass(CS_HREDRAW ¦ CS_VREDRAW,

::LoadCursor(NULL, IDC_ARROW), (HBRUSH)::GetStockObject(GRAY_BRUSH)) ;

// Определить стиль и размер окна DWORD dwStyle = WS_VISIBLE I WS_POPUP;

RECT re;

if (m_pTI-»bFullScreen) {

re.top =» 0;

re.left = 0;

re.right =» ::GetSystemMetrics(SM_CXSCREEN);

re.bottom = ::GetSystemMetrics(SM_CYSCREEN);

} else { // Оконный режим

dwStyle ¦= WS_CAPTION ¦ WS_SYSMENU;

re.top = 50;

re.left = 50;

re. bottom = re. top + m_pTI-»iHeight;

re. right = re. left + m_pTI-»iWidth;

// Настроить окно, чтобы его клиентная область

// имела требуемые размеры

::AdjustWindowRect(&rc, dwStyle, FALSE);

»

// Создать окно.

// В программе нет обработчика сообщения WM CREATE,

// поэтому ничего особенного здесь не происходит. /

if (!CreateEx(0,

strClass,

"DirectSD Window",

dwStyle,

re.left, re.top,

re.right — re.left, re.bottom — re.top,

m_pTI-»pParent-»GetSafeHwnd () ,

NULL)) ( return FALSE;

}

// Обеспечить отображение окна на экране UpdateWindowf) ;

// Задать экранный режим объекта DirectDraw, // создать первичный и вторичный буфера и // при необходимости — палитру if (m_pTI-»bFullScreen) {




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



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