Перейти к содержимому


Свернуть чат Чат Открыть чат во всплывающем окне

Сообщений в чате нет, почему бы вам не оставить первое сообщение?

Irrlicht (игровой движок)


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Deniska

Deniska

    Новичок

  • Пользователи
  • Pip
  • 73 сообщений
Репутация: 19
На пути к лучшему

Отправлено 06 February 2012 - 16:53

Данная тема предназначена для изучения самых базовых принципов программирования на движке Irrlicht. При написании был использован синтаксис языка программирования C++, редактировался он в программе Microsoft Visual Studio C++ 2008 (предпочтительнее использовать CODE::BLOCKS, более лояльная компиляция. В "студии" возникает много непонятных ошибок.). Также вам понадобится сам движок Irrlicht-1.7.2 (http://www.irrlicht.ru/index.php?vm=5 - на сайте есть уроки и много чего полезного).

Далее вы можете читать только после того, как скачали и установили Microsoft Visual Studio C++ 2008 и расположили скачанный Irrlicht-1.7.2, как показано на сайте http://www.irrlicht.ru/index.php?vm=26 (!) В противном случае могут достигаться некоторые несоответствия, в следствие чего появится множество вопросов.

Для начала настроим среду разработки Microsoft Visual Studio (далее MVC++):
Откройте MVC++ и создайте новый проект: File->New->Project.
В появившемся окне (New Project) выбираем тип проекта (Project Type): VisualC++ ->Win32->(В окошке Templates)Win32 console application. Затем пишем имя (Name внизу) проекта и если необходимо меняем расположение проекта (Location). Жмем "OK". Далее появится окно "Win32 Application Wizard - *имя вашего проекта*".
Выбираем "Application Settings" и ставим галочку напротив "Empty project", чтобы создать пустой проект. Жмем "Finish"

Итак, у нас есть пустой проект. Давайте свяжем файлы и библиотеки движка Irrlicht с нашим проектом. Для этого заходим в меню (вверху, там где File) Tools->Options. В появившемся окне найдите пункт "Projects and Solutions" (Проекты и решения), раскройте его плюсом и жмите по "VC++ Directories". Теперь в правой части окна находим "Show directories for" и меняем "Executable files" на "Include files". Если в списке ниже вы не видите пути к папке "Include" движка Irrlicht, тогда необходимо его добавить: жмите значок папки (New Line) и в появившейся строке задайте путь к папке "Include" (например у меня C:\Project\IRRLICHT\irrlicht-1.7.2\include). "OK" пока не жмите (выскочит экран смерти и все системные папки будут стерты. Шучу :) наверное...), это еще не все. х)
Затем вам нужно подключить библиотеки движка: меняем "Include files" на "library files". Если в списке ниже вы не видите пути к папке "lib" движка Irrlicht, тогда необходимо его добавить: жмите значок папки (New Line) и в появившейся строке задайте путь к папке библиотек "lib" (например у меня C:\Project\IRRLICHT\irrlicht-1.7.2\lib\Win32-visualstudio). Теперь жмем "Ок"

Мы подключили все необходимое и теперь смотрим на пустой проект, в котором есть 3 папки: Header Files, Resource Files и Source Files.
Жмем правой кнопкой мыши на папке Source Files и выбираем Add->New Item. В окне "Templates" выбираем "С++ File (.cpp)", пишем имя файла внизу (например Main) и жмем "Ок". Теперь в этом файле мы будем писать код программы.

Начнем (все что указано после "//" является комментарием и никак не повлияет на код).
-----------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <irrlicht.h> //Подключаем заголовочный файл движка Irrlicht (.h - такое расширение имеют заголовочные файлы)

using namespace irr; //Учитывая особенность движка, нам понадобится данный "namespace"

//Также в движке присутствует 5 namespace второго уровня, которые дают компилятору указание подставлять все что необходимо автоматически:
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

//Привяжем библиотеку движка к проекту (если вы не привязали через "Projects and Solutions". По сути одно и то же)
#pragma comment(lib, "C:\Project\IRRLICHT\irrlicht-1.7.2\lib\Win32-visualstudio\Irrlicht.lib") //Мой путь может различаться с вашим

//Далее открываем главную функцию программы
int main()
{
//Инициализируем движок с помощью функции CreateDevice. Она имеет 7 параметров (в скобках):
//1) DeviceType принимает такие значения: а) Null device (EDT_NULL )
//----------------------------------------б) Software device (EDT_SOFTWARE) - это значение мы используем в данном коде
//----------------------------------------в) DirectX8( EDT_DIRECTX8)
//----------------------------------------г) DirectX9.0c ( EDT_DIRECTX9 )
//----------------------------------------д) OpenGL ( EDT_OPENGL )
//2) WindowSize: Размер окна для вывода изображения (или разрешение, если включен полноэкранный режим).
//3) Bits: Количество цветов. Сюда можно ставить либо 16, либо 32. Параметр игнорируется при оконном режиме.
//4) FullScreen: параметр отвечает за полноэкранный режим. (Используем false)
//5) StencilBuffer: параметр отвечает за использование стенсил буфера. (Используем false)
//6) Vsync: параметр игнорируется при оконном режиме. Определяет будет ли FPS синхронизироваться с частотой обновления экрана. (Используем false)
//7) EventReceiver: Объект для обработки событий. Так как он нам не нужен, поставим 0.

IrrlichtDevice *device = createDevice(EDT_SOFTWARE, dimension2d<s32>(512, 384), 16, false, false, false, 0);

device->setWindowCaption(L"Window IrrLicht"); //Определим заголовок окна. Благодаря 'L', Irrlicht Engine использует большие символы строки для вывода текста.

IVideoDriver* driver = device->getVideoDriver(); // Получаем указатель на видео драйвер
ISceneManager* smgr = device->getSceneManager(); // На менеджер сцены
IGUIEnvironment* guienv = device->getGUIEnvironment(); // На графический интерфейс

//Добавим текст, используя графический интерфейс. В скобках указано расположение левого верхнего угла (10,10) и правого нижнего (200,22), соответственно X,Y.
guienv->addStaticText(L"Демонстрация игрового движка - IrrLicht", rect<int>(10,10,200,22), true);

//Теперь загрузим модель. Движок может загружать модели следующих форматов: 1) .md2 (Quake2)
//------------------------------------------------------------------------------2) .obj (Maya)
//------------------------------------------------------------------------------3) .bsp (Quake3 Map)
//------------------------------------------------------------------------------4) .ms3d (Milkshape3D)
//------------------------------------------------------------------------------5) .x (DirectX)
//------------------------------------------------------------------------------6) .3ds (3d Studio Max)

IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2"); //Загрузка модели (в кавычках путь к необходимой модели)
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh); //Чтобы отобразить модель на экране используется "addAnimatedMeshSceneNode()"

//Изменим свойства модели: отключим ее освещение, она будет полностью видна, без затенений.
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false); //Отключаем освещение модели
node->setFrameLoop(0, 310); //Включена анимация. (0-310 кадров анимации)
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, работающий до момента отключения устройства irrlichtDevice
//Будет отрисовываться все, что находится между командами SceneManager beginScene() и endScene() call

while(device->run())
{
driver->beginScene(true, true, SColor(0,200,200,200)); //Очищает экран заданным цветом
smgr->drawAll(); //Позволяем SceneManager (Менеджер сцены) отрисовать все что нужно
guienv->drawAll(); //Позволяем GUI Environment (Интерфейс пользователя) отрисовать все что нужно
driver->endScene(); //Конец отрисовки и вывод на экран
}
//Перед выходом удаляем IrrlichtDevice
device->drop();

return 0; //Если программа выполнена успешно, в вызывающую функцию возвращается ноль.
} //Закрываем главную функцию программы.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Теперь мы можем "построить" свой код. Жмем F7 (либо в верхнем меню: Build->Solution). Смотрим в нижнее окно "Output", чтобы узнать о наличие ошибок. Сообщение выглядит примерно так:

========== Build: 0 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

"Failed" говорит о наличие ошибок. Чтобы просмотреть текст ошибок, переходим на вкладку "Error List" в том же окошке "Output" (вкладка включается через: View->Other Windows->Error List).

Если ошибок нет, жмем F5 (либо кнопка "Start Debugging" в виде зеленой стрелочки) и наблюдаем то, что получилось (если вы писали код в CODE::BLOCKS, компиляция (построение) производится нажатием ctrl+F9, а запуск ctrl+F10).

(При частых ошибках в Visual Studio C++, попробуйте скомпилировать весь код в Code::Blocks)
  • Cupuyc это нравится
Science is interesting! If you don't agree you can f*ck off.




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей