По опыту использования посоветую
OGRE.
Но сперва обсудим упомянутый
Irrlicht. Имею достаточный опыт использования оного. И вот первая свинья: большей часть
функциональных требований автора он не удовлетворяет. Про поддержку компилятора или коммьюнити можно умолчать - это вообще не значимые критерии при наличии прямых рук да документации. А вот то, как с
этим работать и какую картинку
оно выдает - это действительно важно. Пройдемся по всем требованиям по порядку:
- бесплатность - бесплатный. Здесь все хорошо.
- не мозгосносящую архитектуру движка - вроди не так уж все плохо.
- поддержку MinGW - это есть. Да у всех библиотек под С++, которые рашпилем не точились под MSVC она есть - главное руки подстроить
- возможность поиграться с настройками рендера (выбор GAPI, рендер в текстуру) - есть
- поддержку джойстиков искаропки - есть
- возможность многопоточного использования движка (фоновая подгрузка, исключение указанной сущности из рендера) - чтобы сбылись мечты народные - это только руками. Ну нету у иррлихта возможности грузить ресурсы в фоне!
- инструменты поддержки больших открытых пространств (секторная подгрузка террайнов) - отсутствует. Напрочь. Либо руками реализовывать, либо - никак.
- модели погодных явлений (облака, дождь) - опять-таки, руками. Плагинов не встречал.
- легковесность движка и отсутствие необходимости много работать напильником для запуска - все проще некуда - даже хеадер только один!
- наличие на булке людей, разбирающихся в данном движке - парочка есть
- реальную возможность создать тикет и получить ответ - реальная возможность есть. Но ответ никто не гарантирует. Никогда. Это - чисто человеческий фактор.
Из личных впечатлений: вырвиглазная поддержка устройств ввода. Либо пиши уродский класс да извращайся с паттернами программирования, либо пиши все в одной функции. Ужос. Хотя, ООП в С++ не менее ужасно по своей природе, посему не такой уж и ужос
Свет и тени - вот это реальный ужос. Стенсильные тени рендерятся с невероятными артефактами. Свет вроди присутствует, но опять-таки, страшно рисуется... Так что, либо молчишь и мучишься, либо пишешь шейдеры. Что не так кошерно, как...
OGRE. Сдесь упор сделан на архитектуру и на картинку, которую в конечном счете увидит пользователь. Должен отметить, что возраст движка и размер коммьюнити значительно превозносят его над
Irrlicht. Опять пройдемся по пунктам требований:
- бесплатность - бесплатный.
- не мозгосносящую архитектуру движка - по сравнению с Irrlicht архитектура может показаться страшной. Но на деле у ребят отличнейшая архитектура, позволяющая содержать все это в рабочем и, более того, разрабатываемом состоянии.
- поддержку MinGW - см. выше
- возможность поиграться с настройками рендера (выбор GAPI, рендер в текстуру) - огромнейший выбор фич. Начиная от кастомизации инициализации приложения (вместо стандартного диалога выбора рендерера, расширения экрана и т. д.) и заканчивая пост-обработкой изображения и рендерингом в текстуру.
- поддержку джойстиков искаропки - по умолчанию в OGRE используется искаробочная библиотека OIS. О ней - позже.
- возможность многопоточного использования движка (фоновая подгрузка, исключение указанной сущности из рендера) - чтобы сбылись мечты народные - движок предоставляет различные настройки инициализации приложения, как я уже и говорил. Но должен отметить, что в этой самой инициализации приложения и происходит фактическая загрузка всех ресурсов - они парсятся на наличие ошибок и забиваются в кеш. Таким образом, добавление очередного меша составляет гораздо меньшее время. Мало того, эту самую загрузку можно кастомизировать!
- инструменты поддержки больших открытых пространств (секторная подгрузка террайнов) - с одной из последних версий движка - искаропки!
- модели погодных явлений (облака, дождь) - существует чудеснейший плагин - SkyX. В версии 0.4 поддерживается гром и молния плюс объемные облака (для любителей хардкора - при ненадобности но реализации могут добавить лишней работы видяхе. В нужных же случаях - они прекрасны!)
- легковесность движка и отсутствие необходимости много работать напильником для запуска - попробуйте запустить стандартное приложение - есть масса уроков (даже видео!) - все работает искаропки. Правда, нужно помнить о путях ресурсов и, по-хорошему, ложить их рядом с бинарником да убирать из конфига лишние ресурсы.
- наличие на булке людей, разбирающихся в данном движке - парочка есть
- реальную возможность создать тикет и получить ответ - см. выше. Но должен отметить огромнейшее коммьюнити, среди которого активными участниками являются разработчики движка (в отличие от Irrlicht).
Из личных впечатлений: стоит разобраться с ООП в С++, и только тогда приступать к работе с OGRE. Просто потому, что использование будет казаться гораздо более приятным! Та же система ввода гораздо удобнее реализована, нежели в иррлихте. А свет и тени - просто милота! До сих пор восхищаюсь! Наличие разнообразнейших библиотек и плагинов - очень радует. Тот же MyGUI и SkyX, DotScene, OgreNewt/OgreBullet/OgrePhysXWrapper...
Два недостатка, которые лично с моей точки зрения являются недостатками:
кастомизация инициализации приложения и
свой формат ресурсов.
По первому пункту - можно сделать очень многое и очень круто, просто нужно написать кучу кода. И написать ее грамотно. Но это может дать огромные приросты в скорости загрузки приложения, избавление от (кому-то) надоевшего окна выбора параметров инициализации...
По второму пункту скажу, что это скорее даже плюс. Можно, например, ресурсы одной группы (например, персонаж и все что с ним связано) запаковать в архив и грузить из архива все (поддерживается искаропки!). Но не очень хорошо для standalone-разработчика, когда все модели-анимации-материалы приходится конвертировать в этот формат. И наилучшим образом это поддерживается в 3D Max/Blender (в мои времена, по крайней мере, было так). С другой же стороны, этот подход мотивирует использовать
собственный контент.
Выводы
Irrlicht подходит для небольших демок или когда хочется/нужно что-нибудь написать, а особо заморачиваться не хочется.
OGRE настоятельно рекоммендуется в ситуациях, когда картинка решает многое - например, для продакшна.