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 @ref matrix-vector "matrix/vector calculations" and @ref Math::Geometry "geometry". - Classes wrapping OpenGL objects and simplifying their usage - @ref AbstractShaderProgram "shaders", @ref Buffer "buffers", @ref Mesh "meshes" and @ref AbstractTexture "textures". Access to @ref Framebuffer "framebuffer" and @ref AbstractQuery "occlusion queries". - @ref MeshTools "Mesh tools" for cleaning, optimizing and generating meshes, utility classes for @ref Color.h "color conversion", @ref Timeline "timeline" and @ref Profiler "profiling". - Hierarchical @ref SceneGraph "scene graph" which supports transformation caching for better performance, @ref Physics "physics library" for collision detection and rigid body dynamics. - 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", methods for querying @ref Context "supported OpenGL version and available extensions". - 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 To get up and running, you must first subclass one of the provided window context classes and implement required functions. %Magnum provides implementations for the most common toolkits (such as GLUT, Xlib, or SDL2) in Contexts namespace. Then you can either draw your meshes directly or use SceneGraph which will help you with object hierarchy, transformations and resource management. @subsection getting-started-examples Tutorials and examples The best way to get started is to render your first triangle in @ref example-index "step-by-step tutorial". Then you can dig deeper and try other examples, read about @ref features "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 */ }