hogre
For API documentation, see http://anttisalonen.github.com/hogre
Introduction
hogre is a Haskell FFI binding to a subset of OGRE (www.ogre3d.org).
License
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
information.
Installation
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
(http://github.com/anttisalonen/cgen) 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 1.8.0.2 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
[--extra-include-dirs=c:\path\to\include\OGRE]
[--extra-lib-dirs=c:\path\to\OGRE\lib\release].
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
at http://github.com/anttisalonen/hogre-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.
Contact
Email: ajsalonen at gmail dot com