The compiler doesn't like list-initialization of array of classes
(RectangularMatrix constructors). It is perfectly legal C++11 and both
GCC 4.7 and Clang accept it without notice.
* Calling enable_testing() only in root path.
* Using CORRADE_CXX_FLAGS instead of our own set to make things easier
to maintain.
* Various cleanup and reorganization.
OpenGL includes are ~35k lines together and it is a waste of
compilation time to include them even if they are not needed at all
(e.g. whole SceneGraph and Physics libraries). Saves ~10s of compilation
time (6:46 before, now 6:35).
It seems like a bad idea, but it will:
* Improve portability, as `Int` will be always 32bit.
* Improve readability, as `std::int32_t` is just plain ugly and too
complicated to write.
* Improve consistency and reduce confusion, as it's not good to mix
`int`, `std::int32_t`, `GLint`, `khronos_int_t` and whatnot in one
codebase.
* Possibly reduce compilation time, because including all ~35k lines
worth of GL headers just for one GLfloat typedef is even worse than
now forbidden #include <iostream> in headers.
Next few commits will add requirement for "strongly typed" angles in all
function parameters, e.g.:
Matrix3::rotation(24.0_degf);
Math::sin(1.047_radf);
The purpose is to make angle entering less error-prone, e.g. not passing
degrees when radians should be etc.
The implementation was really frightening and it was really used only in
MeshTools::compressIndices(). Other classes like SizeTraits, Pow and Log
were just waiting to be deleted, nothing of value was lost.
* Error when function is missing return type (not just warning).
* Warn when functions in source don't have corresponding declarations
in header. In case that it is not an error they should be put in
anonymous namespace.
Default framebuffer is now accessible throught defaultFramebuffer global
variable, named framebuffers are handled the same way as before. All
operations (clear, setViewport, blit, read) now are member functions
so they cannot be mistakenly used when unwanted framebuffer is bound.
Further rework (DSA, state tracking...) is on the way.
Buffered* hinted that it has something to do with caching, streaming or
whatever. "Buffer texture" is now also consistent with naming in
specification.
It seriously breaks RectangularMatrix::from() and related functions in
subclasses and I don't have better solution for that yet. Hope newer
GCCs fix this issue, because compiling with this option is a way to
unoptimized hell.
The breakage can be seen when Physics::AxisAlignedBox::applyTransformation()
is called in loop from Physics::ObjectShapeGroup::setClean() (e.g.
three AABBs in the group). Result is that the transformation doesn't get
applied at all.
I tried also these solutions without success:
* Reimplementing from() to return (const) copy, so it doesn't alias
original type (warnings suddenly disappear, but the problem persists).
* Using __attribute__((__may_alias__)) on RectangularMatrix - doesn't
help at all (even the warnings remain).
* Using __attribute__((__may_alias__)) on all vector/matrix classes -
causes compilation failure (non-matching function declarations and
definitions due to vector/matrix parameters). Also tried to add it to
all forward-declarations and typedefs, but it causes only a few more
warnings about ignored attribute.
Because with NaCl WindowContext doesn't make sense anymore, the classes
are now renamed:
* Contexts namespace -> Platform
* *WindowContext -> Application
Hopefully this is (one of) last crazy renaming runs.
4.6 doesn't support `override` keyword, using preprocessor macro to
simply hide it. The compatibility mode must be explicitly enabled,
though, using GCC46_COMPATIBILITY CMake option.