OGRE (
Object-Oriented
Graphics
Rendering
Engine) - объектно-ориентированный графический движок с открытым исходным кодом, написанный на языке программирования С++ и разработан специально для упрощения задачи использования аппаратно-ускоренной графики в различных приложениях. Стоит особенно отметить, что OGRE - это не игровой движок в полном понимании этого слова. OGRE - исключительно графический движок, то есть, сам по себе он не обеспечивает реализации звука, поддержки сети, физики и так далее. Однако, дополнительные библиотеки для реализации таких возможностей могут быть легко подключены и использованы.
На первый взгляд, такая узконаправленность движка может быть воспринята как неудобство. Однако, только на первый взгляд. Разработчики могут по своему усмотрению выбирать любые библиотеки, реализующие физику, звук, поддержку сети, что придаёт OGRE большую гибкость. Вот что говорит об этом Sinbad, ведущий разработчик OGRE:
"OGRE - всего лишь часть большой системы. OGRE не является, и никогда не был средством для быстрого создания игр, он - инструмент для определенной цели. Мне иногда приходится бешено защищать эту идею, потому что я иду против идеи других движков, принцип которых "все в одном ". Я думаю, что системы программного обеспечения должны быть модульными, поддерживать расширения и иметь простой интерфейс. Я считаю, что каждое звено должно концентрироваться на своей основной области и позволять другим продолжать специализацию в своей (я считаю безумием пробовать повторно изобрести ODE, например, как делают некоторые другие движки). Я считаю, что наиболее важная часть любой системы программного обеспечения - это интерфейс, способность поддерживать другие проекты. Я понимаю, что этот подход означает, что нельзя с Ogre сделать игру так быстро, как с другим движком "все в одном ". Но я думаю не только про сегодняшний день. Моя философия заключается в создании гибкой графической системы, которая будет универсальной и позволит подключать другие компоненты, вместо того, чтобы сделать движок, который будет уметь всего понемногу и подходить для одного-двух проектов. Я считаю гибкость важнее скорости, потому что в гибкую систему вы можете добавлять модули, чтобы она развивалась в определенном направлении. Конечно разрабатывать игру, имея отдельно физику, отдельно графику, отдельно звук, сеть - очень трудно. Именно поэтому необходимо создать систему, легко объединяющую в себе все необходимые компоненты для того или иного проекта. Время проходит, и я ожидаю большее количество 'комбинированных' решений. Сейчас уже строятся системы основанные на Ogre в связке с другими модулями. Возможно, я буду разрабатывать собственный вариант, объединяющий Ogre c звуковыми/сетевыми/физическими библиотеками. Но мой выбор - это не ваш выбор. Для каждой отдельной задачи будет свой набор компонентов. Я считаю это очень важным. Обратите внимание, это не говорит о том, что вы не можете использовать Ogre для игр. Скорее вы собираетесь использовать его больше для игр, чем для чего-то другого. Это просто значит, что Ogre не решает, какие библиотеки вы будете использовать, и оставляет за вами выбор остального окружения".
Возможности OGRE:ПроизводительностьПростой, понятный, независящий от используемого 3D API (DirectX/OpenGL), объектно-ориентированный интерфейс, который снижает затраты вашего времени при разработке.
Автоматическое управление процессами отрисовки сцены, удаления невидимых объектов и работой с прозрачными объектами.
Богатая документация, которая позволяет быстро найти ответ на интересующий вопрос.
Платформы и 3D API
Поддержка Direct3D и OpenGL
Поддержка Windows, Linux и Mac OSX
Поддержка компиляторов Visual C++ 6 (необходим STLport), Visual C++.Net 2002 (необходим STLport), Visual C++.Net 2003 и Visual C++.Net 2005 в среде Windows
Поддержка компиляторов gcc 3+ в средах Linux / Mac OSX (необходим XCode)
Материалы и шейдерыМощный язык для объвляения материалов, который позволяет выносить опредления материлов в отдельные файлы. Это позволяет сократить время разработки, поскольку вам не нужно каждый раз перекомпилировать программу, когда вы что-то изменяете в материале.
Поддержка вершинных и фрагметных программ (шейдеров). Ogre поддерживает как низкоуровневые программы, написанные на ассемблере, так и программы, написанные на языках высокого уровня (Cg и DirectX9 HLSL).
Поддержка мультитекстурирования, за счет многопроходного рендеринга, а также генерации и модификации текстурных координат на не перепрограммируемом аппаратном обеспечении.
Поддержка множественных техник материала. Вы можете разработать несколько альтернативных вариантов материала, а OGRE автоматически будет использовать лучшие из тех, которые поддерживаются видеокартой.
Поддержка LOD'а для материалов, что позволяет увеличить производительность.
Загрузка текстур из файлов PNG, JPEG, TGA, BMP и DDS, включая такие необычные форматы как одномерные текстуры, объемные текстуры,
cubemaps и сжатые текстуры (DXT/S3TC).
МоделиГибкий формат файлов моделей. Разделение понятий буфер вершин, буфер индексов, объявление вершин и buffer mappings.
Плагины для экспорта моделей из Milkshape3D, 3D Studio Max, Maya, Blender и Wings3D.
Склетная анимаци, включая смешивание нескольких анимаций и variable bone weight skinning.
Поддержка Biquadric Bezier patches для изогнутых поверхностей.
Прогрессиные модели (LOD).
СценаГибкое и легкое управление, не привязанное к какому-то одному типу сцены. OGRE позволяет использовать как стандратные классы для управления сценой, так и собственные, что дает полный контроль.
Несколько примеров плагинов, демонстрирующих различные способы хранения данных сцены и управления ее отрисовкой в завимости от типа сцены (например BSP, Octree).
Сцены основываются на иерархических графах. Узлы позволяют присоеденить один объект к другому, что дает возможность одной командой передвигать, поворачивать и т.д. несколько объектов.
Scene querying features
СпецэффектыПоддержка систем частиц, включая легко настраиваемые эмиторы и аффекторы. Система может быть объявлена в отдельном текстовом файле, что позволяет легко настроить ее. OGRE автоматически использует объединения частиц (particle pooling) для увеличения производительности.
Поддержка skyboxes, skyplanes и skydomes.
Поддержка Billboard'ов для спрайтовой графики
Автоматической управление прозрачными объектами (управление порядком отрисовки и настройками буфера глубины).
ПрочееОтлаженная инфрастуртура управления ресурсами и паматью, а также поддержка загрузки данных из архивов (ZIP, PK3).
Гибкая архитектура, основанная на плагинах, позволяет расширять возможности движка без его перекомпиляции.
Контроллеры позволяют вам легко организовать передачу данных между объектами.
Debugging memory manager для обнаружения утечек памяти.
В поставку входит пример (ReferenceAppLayer) совместного использования OGRE'а и других библиотек, например, ODE для обработки столкновений и физики.
XMLConverter позволяет эффективно конвертировать данные из формата OGRE'а в формат XML и наоборот.
Вот несколько скриншотов из проектов, использующих OGRE 3D:
Iris2
MOTORM4X
Pacific Storm


Ссылки: