Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Основы Irrlicht Engine для новичков

Anna | 24.06.2014 | нет комментариев

Хотелось бы рассказать о такой увлекательной вещи, как Irrlicht Engine. Для начала определимся что это вообще такое. Irrlicht — это сильный графический 3D движок, написанный на C . Подходит сие Диво для разработки как примитивных 2D и 3D приложений, так и для игр. Как и всякий иной движок, Irrlicht имеет ряд особенностей, стержневой из которых является платформенная автономность, то есть программисту, писавшему игру под Windows не необходимо переписывать ни строчки кода, чтоб перенести её на устройство под управлением Linux либо OSX. 

Установка

Так как данный урок рассчитан на новичков, мы будем применять примитивный метод установки движка. Для этого нам потребуется code::blocks. Irrlich не дюже отлично дружит с последними версиями блокса, следственно качаем отсель и устанавливаем проверенную версию 10.05. Code::blocks теснее содержит в своем установщике компилятор, следственно качать его отдельно не необходимо. Дальше создаем на жестком диске папку, где будут храниться наши планы (у меня «D:/IrrlichtDev»). Сейчас качаем отсель последнюю версию Irrlicht’а и разархивируем ее в сделанный нами каталог.

Создание плана

Все нужное у нас есть, настало время для создания плана. Открываем Code:blocks, дальше «File>New>Project», там выбираем «Irrlicht project». Следуя инструкции задаем имя нашему плану, выбираем тот каталог для хранения, указываем в качестве компилятора «GNU GCC Compiler» и, если умоляет, говорим где находится движок.

Все, план сделан, наименьший код сгенерирован механически, но если испробовать скомпилировать его, то получим в результат 2 ошибки. Ничего ужасного, легко в 70 строке заменяем dimension2d<s32> наdimension2du. Компилируем, запускаем и видим очаровательную, низкополигональную женщину с простейшей анимацией.

Поздравляю, это ваш 1-й план на движке Irrlicht. Давайте сотрем непотребные комментарии (мы же разумные, мы и так все осознаем) и оставим следующее:

#include <irrlicht.h>

using namespace irr;           //
using namespace core;          //  Тут указываем пространства имен движка, для того, Дабы
using namespace scene;         //     не указывать их всякий раз, когда обращаемся
using namespace video;         //        к объекту движка.
using namespace io;            //
using namespace gui;           //

int main(int argc, char** argv)
{

    IrrlichtDevice *device =                                     // Тут создаем ссылку на основной объект движка.
        createDevice(EDT_SOFTWARE, dimension2du(640, 480), 16,   // 1-й параметр - это рендер. Теперь стоит программный 
            false, false, false, 0);                             // рендер,  но дозволено указать EDT_OPENGL, скажем.

    device->setWindowCaption(L"Hello HABRAHABR");      // Указываем заголовок нашего окошка.

    IVideoDriver* driver = device->getVideoDriver();    // Ссылки на видео драйвер и администратор сцены.
    ISceneManager* smgr = device->getSceneManager();    // Подробнее о них дозволено почитать в документации.

    smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));  // Добавляем в администратор сцены новую камеру.

    while(device->run())          // Это наш стержневой цикл. Он будет выполняться непрерывно, пока работает движок.
    {
        driver->beginScene(true, true, SColor(0,200,200,200));      // Драйвер начинает отрисовку сцены.

        smgr->drawAll();                                            // Администратор сцены рисует свои объекты.

        driver->endScene();                                         // Драйвер заканчивает отрисовку сцены.
    }

    device->drop();                                                 // Движок перестает трудиться, дозволено его удалить.

    return 0;
}

Теперь на нашей сцене ничего нет помимо камеры, так что давайте добавим примитивный кубик. Для этого легко добавим следующую строчку:

IMeshSceneNode * wall = smgr->addCubeSceneNode();

Если запустим план, то увидим, что наш кубик всецело черный. Это потому, что на сцене нет освещения.
Дабы на него не распространялись законы физики, связанные с освещением, ниже добавим следующее:

wall->setMaterialFlag(EMF_LIGHTING,false);

Думаю не необходимо пояснять оглавление этой строки.
Дабы наш рук

 

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB