Ogre 3D Introduction

Ogre 3D is an open-source, object-oriented, extensible, cross-platform 3D rendering engine with a very clean structure, a very active community and a series of extensions and satellite projects.

Although it is not a complete game engine, it has been extended in several ways to compose different types of game engines, giving some flexibility in the type of components required.

It has been used in several commercial products, and in multiple academia and research contexts.

Ogre3D sub-systems and addons

As referred in the Game Engines page, there are a series of sub-systems that typically compose a game engine. In the context of the DJCO classes of GameDev @ FEUP, the following mapping between libraries and SDK's will be used:

  • Ogre3D will provides by default the following layers:
    • Platform-independence layer
    • Core systems
    • Profiling and debugging layer
    • Resource (assets) management layer
    • Graphics layer
    • Skeletal animation layer
  • The following layers were integrated into Ogre3D from 3rd party open source libraries
    • Input layer - OIS
    • Audio layer - OpenAL
    • Collision and Physics layer - ODE
    • User Interface - CEGUI
  • The following layers are not directly included at this time, but may be added in your code:
    • Networking layer
    • Generic AI layer
    • Gameplay foundation layer
    • Game-specific layer

Main elements and concepts

  • Root Object
    • The entry point for Ogre. It holds references to all the subsystems and helper methods for generic management.
  • Scene Manager
    • Handles the scene graph, and the creation, modification and removal of scene nodes
    • Important associated classes: SceneNode, Entity, Camera, Light, Material, Mesh
  • Render System
    • Handles rendering and abstracts from the underlying render system (OpenGL, DirectX, etc.)
    • Important associated classes: RenderWindow, Renderable, HardwareBufferManager, FrameListener
  • Resource Manager
    • Handles the loading and unloading of assets, and abstracts from file location (e.g. assets may be grouped in a zip file and yet be transparently accessed by their name)
    • Important associated classes: TextureManager, MeshManager
  • Plugins
    • One can create plugins to replace parts of the functionality. For instance, there is an OpenGL plugin that provides an implementation of a RenderSystem, a Texture and other related classes, and a DirectX plugin that does the same. Plugins can be used to extend pretty much of the functionality of Ogre3D, including scene management and resource handling.