Большая часть функциональных возможностей приложения Wraps реализуется классом WrapsWin. Давайте взглянем на определение этого класса:
class WrapsWin : public RMWin { public: WrapsWin(); BOOL CreateScene(); protected: //{{AFX_MSG(WrapsWin) afx_msg void OnWrapsFlat(); afx_msg void OnWrapsCylinder(); afx_msg void OnWrapsSphere(); afx_msg void OnWrapsReset(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: BOOL LoadMeshes(); BOOL LoadTexture(); void ApplyWraps(); void ApplyFlat(LPDIRECT3DRMMESHBUILDER); void ApplyCylinder(LPDIRECT3DRMMESHBUILDER); void ApplySphere(LPDIRECT3DRMMESHBUILDER); private: LPDIRECT3DRMMESHBUILDER box; LPDIRECT3DRMMESHBUILDER cyl; LPDIRECT3DRMMESHBUILDER sphere; D3DRMWRAPTYPE boxwraptype; D3DRMWRAPTYPE cylwraptype; D3DRMWRAPTYPE spherewraptype; };
Также как и класс JadeWin, класс WrapsWin предоставляет две открытые функции: конструктор и функцию CreateScene(). Конструктор используется для инициализации переменных класса. Функция CreateScene() создает сцену приложения. Чуть позже функция CreateScene() будет разобрана более подробно.
В приложении Wraps отсутствует меню Render, но есть меню Wraps. Меню Wraps позволяет пользователю выбрать используемый метод наложения текстуры. Для поддержки функциональных возможностей меню Wraps в классе WrapsWin объявлены четыре защищенные функции: OnWrapsFlat(), OnWrapsCylinder(), OnWrapsSphere() и OnWrapsReset().
Кроме того, в классе объявлены шесть закрытых функций. Функции LoadMeshes() и LoadTexture() применяются для упрощения функции CreateScene(). Оставшиеся четыре функции применяются для изменения параметров наложения текстуры во время работы приложения.
Также объявлены шесть закрытых переменных. Переменные box, cyl и sphere являются указателями на интерфейс Direct3DRMMeshBuilder. Они применяются для доступа к трем сеткам, образующим сцену. Оставшиеся три переменные используются для того, чтобы определить какой тип наложения текстуры используется для каждой из сеток.