#include <LightMap.h>
Public Member Functions | |
LightMap (Mesh *mesh, float posSol[3]) | |
Constructeur de LightMap. | |
GLuint | getTexID () |
Récupère l'ID de la texture correspondant à la LightMap. | |
Texture * | getLightMap () |
Récupère la texture associée à la LightMap. | |
unsigned int | getTaille () |
Récupère la taille de la texture de la LightMap. | |
Private Member Functions | |
void | bestTextureWidth (unsigned int x, unsigned int y) |
Fonction de calcul d'une taille optimale de texture. | |
Private Attributes | |
unsigned char * | lightData |
Tableau des valeurs de la texture. | |
unsigned int | taille |
Taille de la texture. | |
Texture * | tex |
Texture dans laquelle est stockée la LightMap. |
La classe LightMap génère une texture carrée optimale suivant la taille du Mesh sur lequel on travaille.
Dans un premier temps, on récupère la largeur et la longueur du Mesh, et l'on calcule à partir de ces deux valeurs une taille de texture appropriée grâce à la fonction bestTextureWidth(x,y) : on renvoie un multiple de 2 strictement supérieur à la largeur et la longueur que l'on stocke dans taille.
Cette taille est utilisée pour se positionner dans la LightMap. Pour chacun des points du Mesh, on calcule les normales des 6 faces adjacentes que l'on moyenne et l'on fait un produit scalaire entre cette normale et le vecteur directeur du point considéré et du soleil (passé en argument dans posSol).
Le résultat est stocké dans lightData, dont on en fait une Texture stockée dans tex et passée ensuite à la carte graphique.
|
Constructeur de LightMap.
|
|
Fonction de calcul d'une taille optimale de texture. Cette fonction calcule le plus petit multiple de 2 nécessaire à la LightMap pour contenir les informations d'éclairement du Mesh. |
|
Récupère la texture associée à la LightMap.
|
|
Récupère la taille de la texture de la LightMap.
|
|
Récupère l'ID de la texture correspondant à la LightMap.
|
|
Tableau des valeurs de la texture. Tableau dans lequel sont stockés tous les coefficients d'éclairement de tous les points du maillage et à partir duquel on génère une Texture qui sera passée à la carte graphique. |
|
Taille de la texture. Taille calculée à partir de la hauteur et de la largeur du Mesh afin de générer une Texture carrée. |
|
Texture dans laquelle est stockée la LightMap. Une fois que la LightMap est calculée dans lightData, on créé une nouvelle texture à partir du tableau et on la stocke dans tex. |