mirror of https://github.com/mosra/magnum.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
6.5 KiB
140 lines
6.5 KiB
/* |
|
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 2D/3D graphics engine written in C++11 and modern OpenGL. |
|
|
|
@section mainpage-design-goals Design goals |
|
|
|
- **2D is not an ugly stepchild** |
|
Many engines out there are either purely 2D or 3D and if you want to do |
|
your next project in 2D only, you have to either relearn another engine |
|
from scratch or emulate it in 3D, leaving many things overly complicated. |
|
%Magnum treats 2D equivalently to 3D so you can reuse what you already |
|
learned for 3D and even combine 2D and 3D in one project. |
|
|
|
- **Forward compatibility** |
|
If newer technology makes things faster, simpler or more intuitive, it is |
|
the way to go. If you then really need to, you can selectively backport |
|
some features and it will be easier than maintaining full backward |
|
compatibility by default. %Magnum by default relies on decent C++11 support |
|
and modern OpenGL features, but compatibility functions for older hardware |
|
and compatibility branch for older compilers are available if you need |
|
them. |
|
|
|
- **Intuitive, but not restrictive API** |
|
Scripting languages are often preferred to C/C++ because they tend to do |
|
more with less -- less complicated APIs, nicer syntax and less boilerplate |
|
code. %Magnum is designed with scripting language intuitivity in mind, but |
|
also with speed and static checks that native code and strong typing |
|
offers. Usually the most common way is the most simple, but if you need |
|
full control, you can have it. |
|
|
|
- **Extensible and replaceable components** |
|
If you want to use different mathematical library for specific purposes, |
|
that new windowing toolkit, your own file formats or another physics |
|
library, you can. Conversion of data between different libraries can be |
|
done on top of pre-made skeleton classes, support for file formats is done |
|
using plugins and platform support is done by writing simple wrapper class. |
|
|
|
@section mainpage-platforms Supported platforms |
|
|
|
- **OpenGL** 2.1 through 4.3, core profile functionality and modern |
|
extensions |
|
- **OpenGL ES** 2.0, 3.0 and extensions to match desktop OpenGL functionality |
|
- **Linux** and embedded Linux (natively using GLX/EGL and Xlib or through |
|
GLUT or SDL2 toolkit) |
|
- **Windows** (through GLUT or SDL2 toolkit) |
|
- **Google Chrome** (through [Native Client](https://developers.google.com/native-client/), |
|
both `newlib` and `glibc` toolchains are supported) |
|
|
|
@section mainpage-features Features |
|
|
|
- Vector and matrix library with implementation of complex numbers, |
|
quaternions and their dual counterparts for representing transformations. |
|
- Classes wrapping OpenGL and simplifying its usage with direct state access |
|
and automatic fallback for unavailable features. |
|
- Extensible scene graph which can be modified for each specific usage. |
|
- Plugin-based data exchange framework, tools for manipulating meshes, |
|
textures and images. |
|
- Pre-made shaders, primitives and other tools for easy prototyping and |
|
debugging. |
|
|
|
@section mainpage-download-build Downloading and building Magnum |
|
|
|
Guide @ref building "how to download and build Magnum" on different platforms. |
|
|
|
@section mainpage-getting-started Getting started |
|
|
|
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! |
|
|
|
@section mainpage-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 mainpage-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. |
|
> |
|
|
|
*/ |
|
}
|
|
|