view -> unlock ();
}
}
Объект класса Controller отвечает за обработку сообщений (от мыши и клавиатуры) и управляет перемещением шрока по сцене в соответствии с этими сообщениями.
Для удобства работы основные операции по созданию, уничтожению основных объектов и организации цикла по обработке сообщений можно "завернуть" в класс Application.
Е
class Application : public Object {
protected:
HINSTANCE hlnstance; // windoze ' s instance
View * view;
Model * model;
Controller * controller;
ResourceManager * resourceManager,-
public:
Application ( const char * theName,
const char * args = "" ); -Application () ;
ResourceManager * getResourceManager () const
return resourceManager;
View * getview () const return view;
Model * getModel () const return model;
Controller * getController () const return controller;
void okBox ( const char * caption,
const char * format, … ) const;
virtual bool isOk () const; virtual int run ();
static Application * instance; static MetaClass classlnstance,-
};
Тогда главная функция нашего приложения примет следующий вид:
int PASCAL WinMain ( НINSTANCE hCurlnstance,
HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow )
{
Application app ( "Arwen", cmdLine ) ,-
if ( app.isOk () ) return app.run ();
return 0;
}
Ниже приводится диаграмма основных классов.
Гпава 7. Пишем портальный рендерер (часть I)
ПИШЕМ ПОРТАЛЬНЫЙ РЕНДЕРЕР (часть II)
В этой главе мы рассмотрим работу с полупрозрачными гранями, проверку и обработку столкновений с гранями сцены и добавим к нашему проекту консоль в стиле игры Quake.
Работа с полупрозрачными гранями Уже сейчас можно задавать полупрозрачные грани при помощи команды color или явного задания цвета в вершинах со значением а-компоненты, меньшим единицы, например color (1, 1, 1, 0.5). Однако такие грани скорее всего будут нарисованы неверно. Причина заключается в том, что результат вывода полупрозрачных граней (в отличие от непрозрачных) зависит от того, в каком порядке они выводятся. Поэтому обычно сначала выводятся все непрозрачные грани (их можно выводить в любом порядке), после чего осуществляется вывод всех полупрозрачных граней начиная с самой дальней и заканчивая самой ближней (back-to-front).