OGRE (Object-Oriented Graphics Rendering Engine)

Feature Status

What is this document for?

This document is to give OGRE users a guide to how complete / mature each aspect of the engine is, so they can make informed decisions about the parts they can definitely rely on out of the box, and which parts they might need to extend, or at least be a little careful around because they are new or unfinished.

Here's a guide to the statuses I've chosen to use:
Status
Description
Incomplete This feature has been started, but is not complete so should not be considered usable unless you are willing to extend what's there yourself. These features are not listed on the OGRE features list or on the ChangeLog for obvious reasons, but are listed here because you will discover them in the code and the generated documents, albeit not advertised.
Alpha This feature is included, but is very new and has not been extensively tested yet. Because it is in it's first version it may undergo significant changes in future releases. There is also a reasonable chance that you will find bugs in it.
Beta This feature has been tested frequently by the team and probably other keen people who keep up with CVS. It is therefore considered to be pretty stable, but is still quite new.
Production This feature has been included in the engine for some time and is considered stable and mature.

This document is divided into sections relating to the structure of the CVS repository, which broadly conforms to OGRE's module structure:

OgreMain
PlatformManagers
    SDL
    Win32
Plugins
    BspSceneManager
    FileSystem
    GuiElements
    OctreeSceneManager
    ParticleFX
RenderSystems
    Direct3D7
    Direct3D8
    SDL
Tools
    3ds2oof
    3dsMaxExport
    BitmapFontBuilderTool
    MilkshapeExport
    PythonInterface
    XMLConverter

OgreMain module

This is the core module of the system and is on the whole very mature. Here are the specifics:
Feature Example classes Status Notes
Hierarchical scene graph Node, SceneNode, SceneManager, Camera, MovableObject Production Still under incremental enhancement and subject to the odd bugfix, but generally very stable.
Material management MaterialManager, Material, Material::TextureLayer Production  
Dynamic loading plugin system Root, DynLibManager, DynLib Production  
Mathematical routines Math, Vector3, Matrix3, Matrix4, Quaternion Production  
Rendering & geometry pipeline RenderSystem, RenderQueue, Renderable Production  
Mesh / geometry management MeshManager, Mesh, SubMesh, MeshSerializer, PatchSurface Production  
Resource management ResourceManager, Resource, ArchiveManager, ArchiveEx Production  
Sky / background rendering SceneManager Production  
Billboarding & particle systems BillboardSet, Billboard, ParticleSystemManager, ParticleSystem, ParticleEmitter, ParticleAffector Production  
Logging and exception reporting Exception, LogManager, Log Production  
Event listeners (rendering related) FrameListener, RenderTargetListener Production  
Codecs and image loaders Codec, JPGCodec, TGACodec, PNGCodec Production  
Custom memory manager MemoryManager Beta  
Animation infrastructure Animation, AnimationTrack, KeyFrame Beta Could be considered production, but still a bit new and spline interpolation is especially new.
Skeletal animation Skeleton, Bone, Animation, AnimationTrack, KeyFrame Beta  
Font rendering / loading FontManager, Font Beta  
Overlays, 2D elements Overlaymanager, Overlay, GuiElement, GuiContainer Beta Although the display aspects of overlays are complete, there is no event model for accepting input via 2D screen elements yet.

SDL platform manager module

This implements the base platform services via SDL, used for non-Windows platforms.
Feature Example classes Status Notes
Input management SDLInput Incomplete Keyboard and mouse position are production quality, but mouse buttons and game controllers are not implemented yet (general weakness in all input management at the moment).
Configuration system SDLConfig Beta

Win32 platform manager module

This implements the base platform services for Windows platforms.
Feature Example classes Status Notes
Input management Win32Input Incomplete Keyboard and mouse position are production quality, but mouse buttons and game controllers are not implemented yet (general weakness in all input management at the moment).
Configuration Win32ConfigDialog Production  

BSP scene manager

This plugin customises the scene management approach for indoor environments by using a BSP tree and vis clusters. It can import Quake3 levels.
Feature Example classes Status Notes
BSP tree navigation BspSceneManager, BspLevel, BspNode Production  
Quake3 Level Import Quake3Level Beta Support for all level geometry including curved surfaces, although these are built at a fixed subdivision rather than changing on the fly.
Quake3 shader support Quake3Shadermanager, Quake3Shader Beta A few shaders do not parse correctly, deformable geometry & warps are not supported.

FileSystem Plugin

This plugin adds the ability to locate resources in folders of the filesystem.

All features are production status.

GuiElements Plugin

This plugin provides the standard 2D overlay elements which come with OGRE such as Panel and TextArea.

All features are beta status.

OctreeSceneManager Plugin

This plugin customises the standard scene organisation so that the scene is managed using an octree. Asfrom this version it also allows you to render terrain.

All features are beta status.

ParticleFX Plugin

This plugin provides the standard ParticleEmitter and ParticleAffector classes which come with OGRE.

All features are production status.

Direct3D v7 RenderSystem Plugin

This plugin provides a rendering system implementation based on Direct3D version 7.

All features are production status.

Direct3D v8 RenderSystem Plugin

This plugin provides a rendering system implementation based on Direct3D version 8.1.

All features are beta status. You may get better frame rates with the v7 render system for now because compiled vertex buffer support is not yet implemented, and Dx8.1 prefers to work in a vertex buffer manner.

SDL RenderSystem Plugin

This plugin provides a rendering system implementation based on Open GL and SDL.

All features are production status.

3ds2oof utility

This is an old tool which we used to use to convert binary 3D Studion mesh files (.3ds) to the .oof format (OGRE's old mesh file format).

This tool is deprecated. You should not use it unless you really have to, please try to move to the new exporters. A basic 3DS exporter is included with this release and is undergoing further development.

3DStudio Max exporter

This is a 3D Studio MAX (v4 or v5) plugin for exporting model data from 3D Studio to OGRE's native .mesh and .skeleton formats.

This tool is in alpha stage. Mesh exporting is supported, but not material definitions or bones / animation.

BitmapFontBuilderTool

This is just a quick hack to convert the binary character width files created by the BitmapFontBuilder tool into 'glyph' lines for OGRE .fontdef files.

This tool is in beta stage. No project files are provided because it is very simple to build (one .cpp) and is more of a code snippet than a separate project.

Milkshape3D exporter

This tool is a plugin for the Milkshape3D modeller to allow you to export models and animation into OGRE's native .mesh and .skeleton formats.

This tool is in production stage.

Python interface

This sub-project was designed to provide an interface dll so that Python scripts could drive OGRE directly, and to allow Python scripts to be called from the engine to provide game-related scripting.

This sub-project is incomplete. The Python interface has lagged behind because of lack of resources to keep it up to date with the rapidly growing feature set. In addition, problems with Boost.Python using STLport have hampered quick-fix attempts. The project ideally needs outside help from Python enthusiasts to bring this up to date.

XML Converter

This tool converts .mesh and .skeleton files to and from XML. The main OGRE engine uses the binary formats for speed and size efficiency, but this tool lets you export and import XML in order to examine and tweak models.

This tool is incomplete. The conversion from .mesh and .skeleton to XML is working but the reverse is still under development. This should be available for the next release.