Hello world приложение irrlicht на С++

Irrlicht - довольно популярный графический движок. Его особенностью является простота изучения, что немаловажно для новичков.
Для создания первого приложения вам понадобится скачать SDK и собрать его (если у вас linux или Mac) / настроить студию если у вас Windows.
У меня Linux, откомпилируем движок.
Вы скачали архив с движком.
Распакуйте его и войдите через консоль в каталог source.
После чего просто выполните

make

Теперь в lib/Linux у вас появится libIrrlicht.a. Всё готово.
Приступаем к кодингу.
Первое что надо сделать при написании программы использующей Irrlicht - подключить заголовочный файл.

#include <irrlicht.h>

Структура движка такова, что все его компоненты находятся в namespace irr. Чтобы не писать десятки рас irr:: включим в код следующую строку:

using namespace irr;

Кроме того в нём есть 5 пространств имён второго уровня:

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

После этих манипуляций приступим к созданию главной функции:

int main(){

Инициализируем движок и создадим его самый главный объект:

    IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<u32>(640, 480), 16,    false, false, false, 0);

Первый параметр - тип device. Доступны  - Null device ( EDT_NULL ), Software device ( EDT_SOFTWARE ), DirectX8( EDT_DIRECTX8) , DirectX9.0c ( EDT_DIRECTX9 ) и OpenGL ( EDT_OPENGL ).
Второй - размер окна.
Третий - количество цветов ( 16 - 32 ).
Далее можно указать полно экранный режим, использование буфера и другие пока не нужные нам вещи.
Укажем заголовок окна:

device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");

Получим указатели на драйвер, сцену и графический интерфейс:

    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();

Добавим в окно текст:

    guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!", 
rect<s32>(10,10,260,22), true);

Текст будет расположен на позиции (10,10) (левый верхний угол ) и (200,22) ( правый нижний угол ).
Теперь добавим объект:

IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");

Параметр как вы понимаете путь к модели.

 IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

Если всё успешно поколдуем на моделью:

    if (node)
    {
        node->setMaterialFlag(EMF_LIGHTING, false);  //отключаем освещение 
        node->setMD2Animation(scene::EMAT_STAND);  //заставляем модель двигаться
        node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );  //указываем текстуру
    }

Устанавливаем камеру в позицию 0,30,-40, которая будет смотреть в точку 0,5,0:

    smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

Теперь нужно создать цикл который будет работать пока мы не закроем окно:

    while(device->run()){
        driver->beginScene(true, true, SColor(255,100,101,140));
        smgr->drawAll();
        guienv->drawAll();
        driver->endScene();
    }

Всё должно отрисовываться между beginScene() и endScene().
После того как мы нажали кнопку закрытия завершаем программу:

    device->drop();  //уничтожаем device
    return 0;

Можно компилировать. Текстуру и модельку вы можете найти в SDK, там же куча примеров (включая и этот).
В Linux компилируется так:

g++ main.cpp -o main -IПУТЬ_К_ДВИЖКУ/include -LПУТЬ_К_ДВИЖКУ/lib/Linux -lIrrlicht -L/usr/X11R6/lib -lGL -lXxf86vm -lXext -lX11

На єтом пока всё.

Просмотров:   1760

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!