Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

LightMap Class Reference

Calcule une texture d'éclairement. More...

#include <LightMap.h>

List of all members.

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.
TexturegetLightMap ()
 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.
Texturetex
 Texture dans laquelle est stockée la LightMap.


Detailed Description

Calcule une texture d'éclairement.

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.


Constructor & Destructor Documentation

LightMap::LightMap Mesh mesh,
float  posSol[3]
 

Constructeur de LightMap.

Parameters:
mesh Mesh sur lequel calculer l'éclairement
posSol Position du Soleil
Calcule la taille de la texture que l'on va générer, puis calcule pour chacun des points de mesh la normale associée et le produit scalaire entre cette normale et la position du soleil pour obtenir le coefficient d'éclairement de ce point.


Member Function Documentation

void LightMap::bestTextureWidth unsigned int  x,
unsigned int  y
[private]
 

Fonction de calcul d'une taille optimale de texture.

Parameters:
x Largeur du Mesh
y Hauteur du Mesh
Cette fonction calcule le plus petit multiple de 2 nécessaire à la LightMap pour contenir les informations d'éclairement du Mesh.

Texture* LightMap::getLightMap  )  [inline]
 

Récupère la texture associée à la LightMap.

Returns:
La texture contenant l'éclairement
Cette fonction récupère la texture de la LightMap une fois que celle-ci ait été générée à l'aide de lightData.

unsigned int LightMap::getTaille  )  [inline]
 

Récupère la taille de la texture de la LightMap.

Returns:
La taille de la texture générée
Cette fonction permet de récupérer la taille de la texture générée contenant la LightMap.

GLuint LightMap::getTexID  )  [inline]
 

Récupère l'ID de la texture correspondant à la LightMap.

Returns:
ID de la LightMap
Lorsque le calcul de la LightMap est terminé, celle-ci est transformée en texture dont on peut récupérer l'ID avec cette fonction.


Member Data Documentation

unsigned char* LightMap::lightData [private]
 

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.

unsigned int LightMap::taille [private]
 

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* LightMap::tex [private]
 

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.


Generated on Thu Mar 24 12:53:48 2005 for Septant by  doxygen 1.4.1