All rendering code computed the transformation/projection matrix the
same way, resulting in redundant calculations. Also the
`transformationMatrix` parameter of internal draw() function was never
used.
* Added missing forward declarations.
* Added getters and setters to ShapeRendererOptions class.
* Cube primitive is indexed, modified the mesh creation accordingly. It
now uses MeshTools, link the library to DebugTools.
* Simplified resource handling so it's now handled in one place. It
still needs to be thought out better.
* In shader uniforms (projectionMatrix makes more sense than projection
alone)
* For underlying types for SceneGraph transformation. It is already
used in Drawable::clean() as transformationMatrix, so why not use it
also in AbstractFeature::clean(). Moreover, clean() could be in
future also done using something else, this helps to distinguish the
type just from parameter name.
* In Physics shapes - applyTransformationMatrix() (as it could be in
future also done using something else).
It was mainly in DimensionTraits usage. Also using DimensionTraits::*Type
for private members of physics shapes instead of manually specified
superclasses. The header is still included because of all the inline
accessors, so why not use the same type inside the class.
* Instead of "binding attributes" the user now "adds vertex buffer". It
corresponds better with what OpenGL itself does.
* Vertex buffers now must be managed by the user.
* Shader attributes are now static const members instead of typedefs to
allow more convenient add*VertexBuffer*() calls.