Magnum.h now doesn't include anything except OpenGL headers, thus
changes in Math library don't trigger recompilation of everything, but
only of things really depending on it.
Math constants moved to separate file for similar reasons, de-inlined
some functions to remove the need for some #includes.
Automatic behavior could cause harm, as the stencil/depth test could be
temporarily disabled for some parts of the scene (but enabled for the
rest), causing clear() to leave stencil/depth buffer untouched.
* The user might not want to call Framebuffer::clear(), because there
could be something already rendered with another camera.
* The user might not want to call Framebuffer::setViewport(), because
there could be different framebuffer attached.
It's pointless to have Corrade with compatibility enabled and Magnum
without, because even if it somewhat compiles, it won't link together.
Moreover, explicitly setting compatibility in Magnum while Corrade has
it already enabled is only maitenance burden.
Now all possible cases are properly handled (row vector * column vector,
column vector * row vector, ...). All operators taking arbitrary type as
argument (element-wise multiplication) now have std::enable_if only for
numerical types.
Sometimes something needs to modify the data (in similar way it modifies
e.g. MeshData) and there is no reason to forbid that, as the data must
be non-const for delete[] operator anyway. There might be slight problem
with ImageWrapper, which should be able to wrap const data, but
currently nothing needs it.
Currently moved only non-square functionality from Matrix there. Also
static constant members such as row/column count and size are now
lowercase, as they are variables, not types.
Currently you had to do this, even if sizeof(data) was known at compile
time:
GLfloat data[] = { 2.0f, -1.5f, 3.0f, 7.0f };
buffer.setData(sizeof(data), data, usage);
Now it's enough to do this:
buffer.setData(data, usage);