| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > Irrlicht. Начало. |
| Автор: Dronchik 17.6.2008, 16:21 | ||||||||||||||||||||||||
| Irrlicht. Начало. Эта статья об одном из лучших бесплатных игровых движков Irrlicht. Офф сайт irrlicht.sourceforge.net . Начнём с описания движка. Irrlicht это 3D-графический объектно-ориентированый движок. Работает под операционными системами Windows 95, 98, NT, 2000, XP, Linux и MacOS. Движок для рендеринга использует графические библиотеки DirectX8.1, DirectX9, OpenGL 1.5. Движок работает с языками программирования C++, C#, Visual Basic и Delphi(пока в разработке). Теперь переходим работе с движком. Для начала мы должны создать консольный проект и подключить к нему библиотеку irrlicht.lib. После этого в нашем исходнике мы должны подключить заголовочный файл irrlicht.h.
Для удобства все заголовочные файлы движка можно поместить в папку include Вашего компилятора, и библиотеки из папки Lib в папку с библиотеками Вашего компилятора. Всё в движке находиться в пространстве имён irr. Поэтому его мы и подключим.
Также в этом пространстве есть подпространства отвечающие каждая за свои объекты, функции, типы данных. Мы их также подключим. Подробнее об этих пространствах имён можно почитать в документации.
Дальше мы начинаем работу в нашей главной функции main. Для начала мы должны создать графическое устройство:
У функции createDevice 7 параметров. Первый это используемый рендер. На данный момент доступны Null device(EDT_NULL), Software device(EDT_SOFTWARE), DirectX8(EDT_DIRECTX8), DirectX9.0c(EDT_DIRECTX9) и OpenGL(EDT_OPENGL). Второй параметр это размер экрана или иными словами разрешение. Третий параметр это количество цветов. Четвёртый параметр определяет будет ли у нас полноэкранный режим или нет. Пятый параметр отвечает за использование Стенсил буфера. Шестой параметр игнорируется при оконном режиме. Это параметр определяет будет ли FPS синхронизироваться с частотой обновления экрана. И последний параметр это объект для обработки событий. На данном этапе он нам не нужен, поэтому ставим ноль. Теперь мы установим заголовок окна.
Теперь необходимо получить указатель на видео-драйвер, менеджер сцены и графический интерфейс. Это мы делаем для того чтобы постоянно не писать device->getVideoDriver(), device->getSceneManager() и device->getGUIEnvironment().
Теперь мы добавим в нашу сцену 3D модель и нарисуем её. Это будет Sydney.md2 (стандартная модель для движка из папки media). От менеджера сцены мы должны получить указатель на объект(getMesh()) и прикрепить к SceneNode для того чтоб можно было отобразить модель на экран (addAnimatedMeshSceneNode()). Кроме моделей формата md2 Irrlicht умеет загружать большинство распространенных форматов включая .x, .obj, .ms3d и другие.
Далее для корректного и красивого отображения модели мы сделаем чтоб наша модель как бы освещалась со всех сторон(setMaterialFlag(EMF_LIGHTING, false)), заставим нашу модель двигаться(setFrameLoop(0, 310)) и натянем текстуру на нашу модель(setMaterialTexture(0, driver->getTexture("media/sydney.bmp")).
Стандартно при загрузке модель устанавливается в позиции X=0, Y=0, Z=0. Чтобы изменить позицию модели нужно воспользоваться функцией setPosition(core::vector3df(int x, int y,int z)); Далее чтобы увидеть наш объект мы должны установить камеру в позицию (0, 10, -40). C этого места камера будет смотреть в точку (0,5,0).
Теперь мы должны всё нарисовать. Это всё происходит в цикле программы, который будет работать до тех пор пока мы не закроем нашу программу.
Всё прорисовывается между командами beginScene() и endScene(). Для прорисовки используется функция drawAll();
После работы программы следует очищать “загаженную” память. Это мы делаем функцией drop().
Компилируйте и наслаждайтесь. Андрей Ольшевский aka Dronchik |
| Автор: CppDevelopeR 17.6.2008, 16:24 |
| Респект |
| Автор: Graf_h 17.6.2008, 16:41 |
| Dron4ik я также обратил внимание на этот движок! Так что ждем побольше статей! |
| Автор: Dronchik 17.6.2008, 16:56 |
| Graf_h, ок, статьи будут! |
| Автор: THandle 19.6.2008, 00:30 |
| Dronchik, молодец, продолжай в том же духе. Получай заслуженный +1 в репу |
| Автор: Dronchik 19.6.2008, 05:13 |
| THandle, спасибо! |
| Автор: nerezus 21.6.2008, 18:19 |
| А можно пару скриншотов с КРАСИВОЙ графикой и пару примеров игр с КРАСИВОЙ графикой на этом движке? Просто почему же его не используют? Неужели не проще дописать к нему пару фишек, чем написать с нуля? |