|
|
|
|
/*
|
|
|
|
|
This file is part of Magnum.
|
|
|
|
|
|
|
|
|
|
Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz>
|
|
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
|
|
|
copy of this software and associated documentation files (the "Software"),
|
|
|
|
|
to deal in the Software without restriction, including without limitation
|
|
|
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
|
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
|
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
|
|
|
in all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
|
|
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
|
|
DEALINGS IN THE SOFTWARE.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
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 DebugTools::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 creating OpenGL-enabled applications with @ref Platform
|
|
|
|
|
"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
|
|
|
|
|
Platform 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
|
|
|
|
|
|
|
|
|
|
@section license License
|
|
|
|
|
|
|
|
|
|
%Magnum is licensed under MIT/Expat license:
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
> Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz>
|
|
|
|
|
>
|
|
|
|
|
> Permission is hereby granted, free of charge, to any person obtaining a
|
|
|
|
|
> copy of this software and associated documentation files (the "Software"),
|
|
|
|
|
> to deal in the Software without restriction, including without limitation
|
|
|
|
|
> the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
|
|
|
> and/or sell copies of the Software, and to permit persons to whom the
|
|
|
|
|
> Software is furnished to do so, subject to the following conditions:
|
|
|
|
|
>
|
|
|
|
|
> The above copyright notice and this permission notice shall be included
|
|
|
|
|
> in all copies or substantial portions of the Software.
|
|
|
|
|
>
|
|
|
|
|
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
|
|
|
> THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
|
> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
|
|
> DEALINGS IN THE SOFTWARE.
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|