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

         

Класс RocketWin


Функциональность приложения Rocket сосредоточена в классе RocketWin:

class RocketWin : public RMWin { public: RocketWin(); BOOL CreateScene(); protected: //{{AFX_MSG(RocketWin) afx_msg void OnRenderWireframe(); afx_msg void OnRenderFlat(); afx_msg void OnRenderGouraud(); afx_msg void OnUpdateRenderFlat(CCmdUI* pCmdUI); afx_msg void OnUpdateRenderGouraud(CCmdUI* pCmdUI); afx_msg void OnUpdateRenderWireframe(CCmdUI* pCmdUI); afx_msg void OnAnimationLinear(); afx_msg void OnAnimationSpline(); afx_msg void OnUpdateAnimationLinear(CCmdUI* pCmdUI); afx_msg void OnUpdateAnimationSpline(CCmdUI* pCmdUI); afx_msg void OnSpeedFast(); afx_msg void OnSpeedMedium(); afx_msg void OnSpeedSlow(); afx_msg void OnUpdateSpeedFast(CCmdUI* pCmdUI); afx_msg void OnUpdateSpeedMedium(CCmdUI* pCmdUI); afx_msg void OnUpdateSpeedSlow(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: static void UpdateScene(LPDIRECT3DRMFRAME, void*, D3DVALUE); static HRESULT LoadTexture(char*, void*, LPDIRECT3DRMTEXTURE*); private: LPDIRECT3DRMMESHBUILDER meshbuilder; LPDIRECT3DRMANIMATION animation; static D3DVALUE speed; };

Здесь объявлены две открытые функции: конструктор и CreateScene(). Конструктор присваивает переменным класса нулевые значения. Функция CreateScene() создает сцену приложения, включая и анимационную последовательность.

Далее объявлены шестнадцать защищенных функций, являющихся обработчиками событий. Первые шесть предназначены для реализации меню Render, следующие четыре— для меню Animation, а последние шесть функций реализуют меню Speed.

Объявлены и две защищенных функции: UpdateScene() и LoadTexture(). Обе они являются функциями обратного вызова. UpdateScene() применяется для обновления анимационной последовательности, а функция LoadTexture() используется для загрузки и присоединения текстуры к сетке ракеты.

Кроме того, объявлены три переменные:

LPDIRECT3DRMMESHBUILDER meshbuilder; LPDIRECT3DRMANIMATION animation; static D3DVALUE speed;

Указатель meshbuilder используется для загрузки и модификации сетки ракеты. Он применяется в функции CreateScene() и в функциях меню Render. Указатель animation используется для управления объектом Direct3DRMAnimation. Переменная speed применяется для контроля скорости с которой выполняется анимационная последовательность.



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