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



Наше первое трехмерное - часть 3


sh3.CreateSphere (0.15) ;

sh3.SetColor(l, О, О);

«^ Программа ^Ц 21

// Присоединить красную сферу к белой shl.AddChild(&sh3) ;

// Задать положение красной сферы // по отношению к белой sh3.SetPosition(0, 0, 5) ;

// Начать медленно вращать белую сферу // вокруг оси 1, 1, О shl.SetRotation(l, I, 0, 0.015);

// Присоединить весь макет к сцене pWnd->SetScene(Sscene) ;

return TRUE;

BOOL CBasicApp::OnIdle(LONG ICount) {

BOOL bMore = CWinApp::Onldle(ICount);

if (m pMainWnd) (

CSdWnd* pWnd = (CSdWnd*) m_pMainWnd;

// Приказать трехмерному окну сместить макет

//на одну единицу

//и перерисовать окно

if (pWnd->Update(l)) ( ЬМоге = TRUE;

return bMore;

} ) return bMore;

Функция CBasicApp::lnitlnstance создает окно и те объекты, которые образуют макет, а функция CBasicApp::Onldle обновляет положение этих объектов во время пассивной (idle) работы приложения. Класс CBasicApp был сгенерирован AppWizard во время создания приложения. Он является производным от класса CWinApp, входящего в MFC и обеспечивающего основную функциональность Windows-приложения. Давайте подробно рассмотрим, что же делают эти две функции.

Первое, что происходит в Initlnstance, — построение окна, в котором будет отображаться трехмерный макет. Окно класса CWinApp создается в качестве главного окна приложения. Класс C3dWnd принадлежит библиотеке 3dPlus, как и все остальные рассматриваемые нами классы, имена которых начинаются с префикса C3d (исходный текст библиотеки 3dPlus находится на прилагаемом диске CD-ROM вместе с другими примерами). Указатель на созданное окно присваивается переменной m_pMainWnd, являющейся членом базового класса CWinApp из MFC. Указатель на окно используется кодом MFC при обработке сообщений приложением и т. д. Завершающим шагом в создании окна является вызов функции UpdateWindow для прорисовки окна на экране.

22 Глава 1. Каше первое трехмерное приложение

Затем создается объект класса CSdScene. В него входят все элементы одной сцены, отображаемой в трехмерном окне (например, источники света, трехмерные объекты и т. д.).




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