Туториал №1: Hello World
Перед началом урока скачайте архив http://downloads.sourceforge.net/irrlic … 1.8.1.zip, распакуйте куда нибудь и скопируйте в папку нашего проекта папку media.
После того как вы настроите свое IDE, ваш компилятор будет знать где лежат заголовки IrrLicht и вам надо всего лишь подключить их к своему проекту, вот так:
В движке все его сущности определены в пространстве имен(namespace) ‘irr’. Таким образом если вам надо обратится к классу движка, то вам надо написать irr:: перед его именем. Для примера, чтобы использовать IrrlichtDevice пишите: irr::IrrlichtDevice. Вставляя irr:: перед имене класса, мы сообщеам компилятору, что используем пространство имен движка. Хотя, можно ибавится от необходимости писать эту приставку с помощью следующей строки:
Ниже перечислены 5 подпространств движка. Подробное описание каждого из них доступно по этой ссылке: http://irrlicht.sourceforge.net/docu/namespaces.html . Как и в случае с irr:: вы можете избавится от необходимости их постоянно указывать вот так:
Чтобы использовать Irrlicht.DLL, надо подключить Irrlicht.lib. Это можно сделать двумя способами, указать в настройках линкера или использовать диррективу pragma comment.
irrlicht кроссплатформенный движок, поэтому мы будет использовать main вместо WinMain.
Cамая главная функция движка – это createDevice() , ею создается корневой объект движка IrrlichtDevice и методами которого делается много чего полезного. Функция createDevice() имеет 7 аргументов
deviceType: Тип устройства. Принимает значения: EDT_SOFTWARE, EDT_BURNINGSVIDEO, EDT_NULL, EDT_DIRECT3D8, EDT_DIRECT3D9 или EDT_OPENGL.
windowSize: размер окна в оконном режиме или разрешение экрана в полноэкранном режиме.
bits: Количество бит для цвета на один пиксель. Может быть 16 или 32. Параметр часто игнорируется в оконном режиме.
fullscreen: определяет в оконном или полноэкранном режиме будет запущено приложение
stencilbuffer: включает трафаретный буфер (для рисования теней).
vsync: включает вертикальную синхронизацию, полезна для полноэкранного режима.
eventReceiver: объект – обработчик событий. Если в нем нет необходимости, ставить равным нулю.
Всегда проверяйте что вернула эта функция, т.к. возможно движок не поддерживает ваши видеодрайвера или разрешения экрана и т.д..
Определяем заголовок окна чем нибудь симпатичным и подходящим по смыслу. Заметка: перед кавычками стоит ‘L’, т.к. Irrlicht использует для текстовых символов 2 байта.
Создадим указатели на видео драйвер, менеджер сцены и менеджер пользовательского интерфейса:
С помощью GUI среды создадим текстовую метку в координатах (10,10) левый верхний угол и (260,22) правый нижний. Чтобы выводимый текст был на русском языке, файлы проекта должны быть в кодировке UTF-8, если у вас так, то можете смело вместо “Hello World!….” писать “Привет Мир!…”.
Чтобы было не так скучно, загрузим модельку из игры Quake2 и отобразим ее. Мы просто “попросим” ее у менеджера сцены с помощью getMesh() и добавим к сцене с помощью addAnimatedMeshSceneNode(). Чтобы избежать ошибок, проверим загрузилась модель без ошибок.
Вместо того, чтобы писать Имя файла sydney.md2, можно будет также загрузить объектный файл Maya(.obj), карту Quake3 (.bsp) или любой другой поддерживаемый Формат
Чтобы моделька выглядела привлекательно, мы натянем на нее материал. Отключим освещение для этой модели иначе она будет рисоваться абсолютно черной, потому как на сцене нет источников света. Затем определим диапазон фреймов, будет использовать предопределенный набор STAND из списка стандартных анимаций для моделей Quake2.
Чтобы увидеть модель на экране, надо добавить на сцену камеру и направить на нее. Камеру значит разместим в позиции (0, 30, -40), а “смотреть” она будет в точку (0,5,0), где приблизительно располагается загруженная модель.
И так, сцену мы настроили, теперь запускаем главный цикл программы, в котором происходит вывод на экран. (для того чтобы закрыть окно программы используйте ALT+F4
Все что может нарисоваться на экране, рисуется между вызовами beginScene() и endScene(). Функция beginScene() закрашивает выбранным цветом основной буфер экрана и дополнительный (если нужно). Затем даются команды менеджеру сцены и менеджеру пользовательского интерфейса нарисовать свой контент. Фукция endScene() выводит все на экран.
По завершению главного цикла программы мы должны удалить главный объект движка, созданный с помощью createDevice(). В движке Irrlicht все объекты созданные функциями, начинающимися с приставки ‘create’, можно удалить методом drop (см. irr::IReferenceCounted::drop() ).
вот и все!
Выставляем на панели из списка Release и нажимаем Build ("зеленый стрелочка")
Отредактировано LeGUN (11-11-2014 16:16:33)