Skip to content
Haskell binding to OGRE
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



For API documentation, see


hogre is a Haskell FFI binding to a subset of OGRE (


hogre is licensed under MIT. OGRE is licensed under LGPL for versions before
1.7.0 and under MIT for 1.7.0 and later. See the OGRE website for more 


1. Install OGRE C++ libraries on your system. Consult your OS on 
how to do this. For Debian and Debian-like Linuxes, something like 
"sudo aptitude install libogre-dev" should do.

2. Install cgen, a program for generating C++ bindings for Haskell, which is
needed by hogre. You can download the cgen source at github 
( or install it from Hackage using cabal.

3. As hogre generates a C interface to OGRE and compiles it, you need a C++
compiler - on Debian and Debian-like distributions, 
"sudo aptitude install build-essential" should do.

4. [Linux/Unix] cabal configure [--user] && cabal build && cabal install.
pkg-config is used for determining the correct include and library paths.

Note 1: At least using cabal version the build step is actually 
unnecessary - hogre will be built during install phase.
Note 2: building hogre may take quite a while because of compiling C++.
During this cabal will print no output. To see the build progress, use 
"cabal install -v2".

4. [Windows] cabal configure [--user] && cabal install
The extra include and library directories must be supplied in case
the OGRE headers and libraries are not in the standard include and library
search path. Also, the Boost C++ headers must be found in the include path.
The OGRE include path must be the first include path supplied.

5. OGRE does only graphics; for input, audio, networking etc. you need
separate libraries. You're free to choose which (if any).

6. You may want to check out the hogre-examples package for some examples

Known issues and bugs

Currently there is no exception handling, which means incorrect use (e.g.
not calling init or trying to access a non-existing entity will lead to an
error report and crash. As long as nothing illegal is done, everything's fine.
I'm planning on adding exception handling.

I'm not quite sure how portable it is; it should work on any platform OGRE
runs on (Linux, Mac OS X, Windows), and should work on any Haskell compiler 
that does FFI and knows how to invoke a C++ compiler. So far only GHC has 
been tested. It shouldn't matter which C++ compiler is being used.


Email: ajsalonen at gmail dot com

You can’t perform that action at this time.