Automatic Binding for Attributes

QAbstractMeshData has a set of static methods returning default names for
vertex position, color, normal, textcoord and tangent so that mesh loaders can
use those when building their MeshData.
As with uniforms, a ParameterMapper can be used to map additional/custom named
attributes.

Change-Id: I8ad116a1cccabc981c2ce196e920fbe88834be06
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QAspectManager slightly reworked

The QAspectManager has a getter to the window.
registerAspect now initializes directly the aspect prior to registration.
The aspect is at that point able to retrieve the window through the
QAspectManager if needed.
The setRoot method now only calls registerAspect on the aspects.
The setWindow method was removed from all aspects

Change-Id: I730861a089be15220f7fd36201d15d59ed3ede70
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Renderer QGraphicsContext initialized at startup

RendererAspect, RenderThread and Renderer have been modified to create the
QGraphicsContext prior to setting the SceneGraph root node. This will allow to
query the QGraphicsContext when building the FrameGraph/SceneGraph trees.
Then RendererAspect launches and waits for the RenderThread to be running, all
threads are locked at that point (but the QML thread on which we have no control).
The RenderThread creates the Renderer and puts it in a waiting for
initialization state prior to allowing any other thread to continue their
execution. When the RendererAspect assigns a Window to the Renderer, this
wakes up the Renderer which was waiting for initialization. Initialization is
therefore performed and the QGraphicContext is created. Note that a call to
QWindow::create is performed prior to that so that the window has its storage
allocated eventhough it's not yet being shown. The issue we had previously with
QGraphicContext creation failure was also caused by that, in most cases
QWindow::show (which calls create) was called before we tried to create the
QGraphicContext but eventually this would not always be the case, hence some
failures. Once the window and the QGraphicsContext have been initialized, the
setSceneGraphRoot of the Renderer is called and frame processing is launched.

Change-Id: Ib18faef5b38d88fdf09fe6b27940af9ad0a1cd6e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Renamed AbstractAspect to QAbstractAspect

Change-Id: I5ef4fe5ca3c5cd7b373d87eecf515bfee28dedad
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Renamed Parameter to QParameter

Change-Id: I1377b93ca06a838a625d38db8b77ebcee438b203
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Renamed ParameterMapper to QParameterMapper

Change-Id: I21b02cd26a3181dca989028cfacc8f19ca3c8984
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QParameter d-pointered

Change-Id: Id45a341070319d281daf78edb9178037a9eb59eb
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QParameterMapper d-pointered

Change-Id: I2482c97a45c0ae62345b47786e6400e413efb61a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QAbstractAspect d-pointered

Change-Id: I3f456202d9333e1760a5c9796ed5177c8c6537b6
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QAspectEngine d-pointered

Change-Id: I74bd5883b5dbdcbbbf22992d457d578af81940ef
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QAspectManager d-pointered

Change-Id: I7692db9821f799f0ffb9e11b67aa5eb0982f966a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>