#############################
Modifying a Material Priority
#############################

Changing a material priority is very easy, you just need to call the ``RED::IMaterial::SetPriority`` function:

.. code:: cpp 
        
    // Let imat1, imat2 and imat3 three existing RED::IMaterial.
    // Let ishape1, ishape2 and ishape3 three RED::IShape.

    // Change the material priorities:
    RC_TEST( imat1->SetPriority( 1, iresmgr->GetState() ) );
    RC_TEST( imat2->SetPriority( 0, iresmgr->GetState() ) );
    // imat3 keeps it default priority.

    // Set the material to the shapes:
    RC_TEST( ishape1->SetMaterial( mat1, iresmgr->GetState() ) );
    RC_TEST( ishape2->SetMaterial( mat2, iresmgr->GetState() ) );
    RC_TEST( ishape3->SetMaterial( mat3, iresmgr->GetState() ) );

The previous code sample defines three ``RED::IMeshShape``, each with its own material.

Material priorities are defined as:

    * priority 1 for the material of the shape 1
    * priority 0 for the material of the shape 2
    * default priority for the material of the shape 3

The rendering order will be:

    * shape 2 (priority 0)
    * shape 1 (priority 1)
    * shape 3 (default priority)