Tutorial 1 : les lumières
Nous allons voir dans cette partie du tutorial comment ajouter des lumières à notre scènes.
Ajout des lumières
La couleur!!
Il faut rajouter 2 variables globales dans le fichier main.c.
|
RtCharset *Charset = NULL; //les
2 lumières |
Ces 2 variables sont les lumières ambiante et directionnelle. Il faut ensuite une fonction qui crée les lumières et les ajoutes au monde. Par défaut les lumières sont blanches.
| static
void CreateLights(void) { Ambient = RpLightCreate(rpLIGHTAMBIENT); if (Ambient) { RpWorldAddLight(World, Ambient); } Direct = RpLightCreate(rpLIGHTDIRECTIONAL); } |
On voit qu'on crée d'abord la lumière ambiante puis la lumière directionnelle. La lumière directionnelle est attachée à une Frame. Une Frame contient en fait les matrices permettant de déplacer un objet attaché à cette Frame.
Comme le monde et la caméra, qui sont créés dans Initialize3D(), il faut créer les lumières, là aussi dans Initialize3D().
| //
création des lumières CreateLights(); /* Create
a camera using the democom way... */ |
Et comme le clump dans le chapitre précédent, il faut détruire les lumières:
| /** Destruction des lumières */ static void DestroyLights() { //si la lumière directionnelle a été créée if (Direct) { RwFrame *f; RpWorldRemoveLight(World, Direct); //on récupère la frame f = RpLightGetFrame(Direct); RpLightSetFrame(Direct, NULL); //on détruit d'abord la frame RwFrameDestroy(f); //puis la lumière RpLightDestroy(Direct); Direct = NULL; } //si
la lumière ambiante a été créée |
Et voici l'appel de la fonction crée ci-dessus:
| //Destruction
de tous les clump du World RpWorldForAllClumps(World, _destroyClumpCB, NULL); //destruction
des lumières |
Maintenat on recompile, on exécute et on appuie sur F1:

Fiat Lux!
Maintenant, on va essayer de mettre de la couleur dans le monde...
Nous avons vu comment gérer l'appui sur F1. Nous allons voir comment changer la couleur des lumières en appuyant des touches F2 à F8. Il faut donc aller dans le gestionnaire du clavier. Et ajouter le code suivant :
| case rsF2: { if(Ambient) { RwRGBAReal Red = {1.0, 0, 0, 1.0}; RpLightSetColor(Ambient,&Red); } return rsEVENTPROCESSED; } case rsF3: |
Le bout de code ci-dessus permet de changer la couleur de la lumière ambiante et directionnelle et de les mettre en rouge.

Ce premier tutorial nous a permis de réaliser (le squelette nous a servi quand même...) une première application RenderWare, de lire un objet RenderWare, d'ajouter des lumières et de colorer ces lumières.
Dans le tutorial suivant nous allons voir comment réaliser l'interaction entre l'utilisateur et l'application : Tutorial 2