[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Игровые движки » IrrLicht Engine » Как подключить IrrLicht к Windows Forms (C++)
Как подключить IrrLicht к Windows Forms (C++)
MerGC_TeamДата: Вторник, 08.04.2014, 13:30 | Сообщение # 1
Веселый админ
Группа: Администраторы
Сообщений: 32
Статус: Оффлайн
1 - создаем новый проект windows forms.
2 - в свойствах проекта-> свойства конфигурации-> общие-> Поддержка общеязыковой среды выполнения (CLR), ставим "Поддержка CLR-Среды (/clr)"
3 - добавляем к проекту файл "irrCommands.h" со следующим содержимым:

Код
#include <irrlicht.h>
#pragma comment(lib, "Irrlicht.lib")
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")

using namespace irr;
(Лучше всего не добавлять остальные using namespace 
чтобы не было конфликтов.)

Добавляем параметры девайса, сам девайс, видеодрайвер, менеджер сцены и ГУИ:
Код
/* с++ код--------------------------------*/
    irr::SIrrlichtCreationParameters param;                
    irr::IrrlichtDevice* device = 0;
    video::IVideoDriver* driver = 0;
    irr::scene::ISceneManager* smgr = 0;
    irr::gui::IGUIEnvironment* guienv = 0;
/* с++ код--------------------------------*/


Добавляем функцию инициализации:

Код
void initIrr()
    {
             //Заводим девайс, получаем видеодрайвер, менеджер сцены и ГУИ:
             device = irr::createDeviceEx(param);
             driver = device->getVideoDriver();
             smgr = device->getSceneManager();
             guienv = device->getGUIEnvironment();
             //и добавляем камеру:
             smgr->addCameraSceneNodeMaya();
    }


Главный цикл движка иррлихт:

Код
void updateIrr()
    {
             while(device->run())
             {
             driver->beginScene(true, true, 0);
             smgr->drawAll();
             guienv->drawAll();
             driver->endScene();
             }    
    }


Функция добавления ресурсов, которую мы позже повесим на кнопку:(добавьте ирлихтовскую папку "Data" в папку  с приложением .)

Код
void addRes()
    {
       guienv->addStaticText(L"Hi dude! This is the Irrlicht winforms demo!", core::rect<s32>(10,10,260,22), true);
       device->getFileSystem()->addFileArchive("./media/map-20kdm2.pk3");
       scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
       scene::ISceneNode* node = smgr->addOctreeSceneNode(mesh->getMesh(0), 0, -1, 1024);       
       node->setPosition(core::vector3df(-1300,-144,-1249));
    }




Теперь займемся кодом winforms:
1 - подключаем "irrCommands.h"

Код
#pragma once
#include "irrCommands.h"


2 - добавляем таймер, на событие "Tick" вешаем код:
Код
this->timer1->Stop(); // чтобы цикл не дублировался каждый кадр
          updateIrr(); //запускаем главный цикл ирлихта
(в winforms остальной код программы все равно будет выполняться паралельно с циклом)  

3 - На событие формы "Load" вешаем следующий код:
Код
param.DriverType = video::EDT_DIRECT3D9;
          param.WindowId = reinterpret_cast <void*>(this->panel1->Handle.ToInt32());
          initIrr();
          this->timer1->Start();


4 - Создаем кнопку и на событие "Click" вешаем:
Код
addRes();

5 - А на событие формы "FormClosed" вешаем:
Код
device->drop();


Все готово smile
Автор Шичкин Геннадий (MerGC Studio)

Скачать готовый проект
 
Форум » Игровые движки » IrrLicht Engine » Как подключить IrrLicht к Windows Forms (C++)
  • Страница 1 из 1
  • 1
Поиск: