|
|
|
|
namespace Magnum {
|
|
|
|
|
/** @mainpage
|
|
|
|
|
|
|
|
|
|
%Magnum is 3D graphics engine written in C++11 and OpenGL 3 Core Profile.
|
|
|
|
|
Features:
|
|
|
|
|
|
|
|
|
|
- Easy-to-use templated @ref Math "mathematical library" for matrix/vector
|
|
|
|
|
calculations and @ref Math::Geometry "geometry".
|
|
|
|
|
- Hierarchical @ref SceneGraph "scene graph" which supports transformation
|
|
|
|
|
caching for better performance, classes for convenient usage of
|
|
|
|
|
@ref AbstractShaderProgram "shaders", @ref Buffer "buffers" and
|
|
|
|
|
@ref AbstractTexture "textures". Access to @ref Framebuffer "framebuffer"
|
|
|
|
|
and @ref AbstractQuery "occlusion queries".
|
|
|
|
|
- @ref Physics "Physics library" for collision detection and rigid body
|
|
|
|
|
dynamics, @ref MeshTools "Mesh tools" for cleaning, optimizing and
|
|
|
|
|
generating meshes.
|
|
|
|
|
- Plugin-based @ref Trade "data exchange framework" for importing image, mesh,
|
|
|
|
|
material and scene data in various formats.
|
|
|
|
|
- Collection of pre-made @ref Primitives "graphic primitives" and
|
|
|
|
|
@ref Shaders "shaders" for testing purposes.
|
|
|
|
|
- Classes for easy creation of OpenGL context with @ref Contexts
|
|
|
|
|
"various toolkits".
|
|
|
|
|
- Comprehensive use of C++11 features for safety, performance and ease of
|
|
|
|
|
development. All code which doesn't directly interact with OpenGL is
|
|
|
|
|
covered with unit tests.
|
|
|
|
|
|
|
|
|
|
The engine is meant to be run on OpenGL 3 capable hardware, but most of the
|
|
|
|
|
functionality is working on OpenGL 2.1 hardware too. The engine can be built
|
|
|
|
|
also for OpenGL ES with limited functionality. See also @ref required-extensions.
|
|
|
|
|
|
|
|
|
|
@section download-build Downloading and building Magnum
|
|
|
|
|
|
|
|
|
|
Guide @ref building "how to download and build Magnum" on different platforms.
|
|
|
|
|
|
|
|
|
|
@section getting-started Getting started
|
|
|
|
|
|
|
|
|
|
Applications using %Magnum have at least two parts. One part manages OpenGL
|
|
|
|
|
context using some toolkit and takes care of window resizing, mouse and
|
|
|
|
|
keyboard input, while the other manages the scene and does the rendering.
|
|
|
|
|
While it is possible for you to manage the OpenGL context and events on your
|
|
|
|
|
own, %Magnum provides implementations for the most common toolkits (such as
|
|
|
|
|
GLUT, SDL or Qt) in Contexts namespace. %Scene in %Magnum is composed of
|
|
|
|
|
hierarchically connected object instances. To build the scene you need Scene
|
|
|
|
|
object with assigned camera and at least one Object instance.
|
|
|
|
|
|
|
|
|
|
@subsection getting-started-examples Tutorials and examples
|
|
|
|
|
|
|
|
|
|
The best way to get started is to @ref examples-triangle "render your first triangle"
|
|
|
|
|
in step-by-step tutorial. Then you can dig deeper and try @ref example-index
|
|
|
|
|
"other examples", read about fundamental principles in the documentation or
|
|
|
|
|
start experimenting on your own!
|
|
|
|
|
|
|
|
|
|
@subsection getting-started-hacking Hacking Magnum
|
|
|
|
|
|
|
|
|
|
If you want to hack on this engine, if you spotted a bug, need an feature or
|
|
|
|
|
have an awesome idea, you can get a copy of the sources from GitHub and start
|
|
|
|
|
right now! There is the already mentioned guide about
|
|
|
|
|
@ref building "how to download and build Magnum" and also guide about
|
|
|
|
|
@ref coding-style "coding style and best practices" which you should follow to
|
|
|
|
|
make the library as consistent and maintainable as possible.
|
|
|
|
|
|
|
|
|
|
Feel free to get more information or contact the author at:
|
|
|
|
|
|
|
|
|
|
- GitHub - https://github.com/mosra/magnum
|
|
|
|
|
- Website - http://mosra.cz/blog/
|
|
|
|
|
- E-mail - mosra@centrum.cz
|
|
|
|
|
- Jabber - mosra@jabbim.cz
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|