![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Dronchik |
|
||||||||||||||||||||||||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 8 Всего: 37 |
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 Это сообщение отредактировал(а) Dronchik - 17.6.2008, 16:22 -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
CppDevelopeR |
|
|||
![]() Experienced Expert ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 7.1.2008 Где: Moscow-City Репутация: нет Всего: 9 |
Респект
|
|||
|
||||
Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 3 Всего: 5 |
Dron4ik я также обратил внимание на этот движок! Так что ждем побольше статей!
![]() ![]() -------------------- Иногда переменная - это просто переменная |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 8 Всего: 37 |
Graf_h, ок, статьи будут!
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: нет Всего: 372 |
Dronchik, молодец, продолжай в том же духе. Получай заслуженный +1 в репу
![]() |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 8 Всего: 37 |
THandle, спасибо!
![]() -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
А можно пару скриншотов с КРАСИВОЙ графикой и пару примеров игр с КРАСИВОЙ графикой на этом движке?
Просто почему же его не используют? Неужели не проще дописать к нему пару фишек, чем написать с нуля? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |