AbstractImporter now provides access to the data directly and doesn't
attempt to do any OpenGL stuff, thus making everything more transparent
and testable.
It was overengineered and unnecessarily complicated. Now the camera is
specified only in Scene::draw(), which eliminates all the needs for
recalculating absolute object transformations on each camera
transformation change. Absolute object transformation is now computed
relative to root object or relative to camera object passed as
parameter. Because of that it is now also possible to draw the scene
using multiple cameras at once.
Qt is needed only for building tests, thus it is in makedepends, GLEW on
the other hand is needed all the time, as it is dynamic library. Mesa is
dependency of GLEW, thus removing it.
Fuzzy comparison is implemented only on floating-point types with
type-specific epsilon, on integral types classic operator== is used.
TypeTraits class is now extension of Math::TypeTraits (where it makes
sense).
Start of AbstractImporter rework - Trade namespace will contain simple
classes usable for exchanging data with other formats, importers will
not depend on any OpenGL functionality, they will just provide access to
plain data.
Each importer must now specify whether it can open files or streams in
features() and implement one or both open() functions. Default
implementation of open() functions now prints message on error output
and returns false.
Algorithm used: Pedro V. Sander, Diego Nehab, and Joshua Barczak, Fast
Triangle Reordering for Vertex Locality and Reduced Overdraw, SIGGRAPH
2007, http://gfx.cs.princeton.edu/pubs/Sander_2007_%3ETR/index.php
Also created new shared MeshTools library.
* Removed VertexPointer typedef, as size_t is somewhere 64bit and
OpenGL doesn't have corresponding data type. Using unsigned int
everywhere instead, to avoid confusion.
* Removed Face structure altogether, using vertex indices directly.
* Greatly reduced size of unit tests, also thanks to C++11
std::initializer_list feature.