![]() |
Charger des images TGA |
Publié par :
Docenstoc
|
Document sous licence CC: http://creativecommons.org/licenses/by-nd/2.0/fr/. Charger des images TGA.
Le type tga_header_t doit avoir une taille de 18 octets. Certains compilateurs utilisent par défaut un alignement différent (sur 4 octets par exemple) et qui font qu'une structure de 18 octets occupe 20 octets (multiple de 4). C'est pour cela qu'on utilise les directives préprocesseur #pragma pack pour aligner le type tga_header_t sur un octet.
Les trois variables commençant par cm sont spécifiques à la palette de couleur. cm_first_entry indique l'index de la première couleur dans la palette. Il est possible en effet que la palette soit d'une taille plus grande que nécessaire et les données de la palette peuvent ne pas se trouver au début de ce champs (au milieu par exemple). cm_length est le nombre de couleurs de la palette. Enfin, cm_size est le nombre de bits par couleur de la palette. Il peut être de 15, 16, 24 ou 32.
À partir de cette structure, nous pouvons déjà obtenir un certain nombre d'informations sur l'image et initialiser tous les champs de notre objet gl_texture_t à l'exception de texels. Nous pouvons néanmoins réserver une zone mémoire pour stocker les données pixels de l'image.
Pour le moment notre fonction ne fait pas grand-chose : ouverture du fichier en mode binaire ("rb"), lecture de l'en-tête dans header, initialisation des variables de texinfo et déplacement au début des données de l'image (rappelez-vous, il peut y avoir des informations additionnelles entre l'en-tête et les données de l'image). La fonction GetTextureInfo() est détaillée dans la section suivante.
Les images en 8 et 16 bits seront converties à la lecture en 24 bits sauf pour les images en dégradé de gris, où l'on utilise le format GL_LUMINANCE. Les autres sont au format GL_RGB ou GL_RGBA. Une image 16 bits en dégradé de gris est composé de 8 bits pour l'intensité de gris et d'un canal alpha de 8 bits.
À l'aide des variables image_type et pixel_depth de l'en-tête, nous allons devoir déterminer quelle méthode utiliser pour lire ces données. Le plus pratique je pense est de faire un choix conditionnel (switch) suivant image_type puis pour chaque cas, voir avec pixel_depth si c'est nécessaire.
Il y a quatre grand type d'images : les images en 16-24-32 bits, appelées également images en couleurs vraies, les images 8 bits avec palette, les images en dégradé de gris 8 ou 16 bits, et les images compressées (où l'on retrouve les trois premiers types à chaque fois). On va commencer par le plus simple et finir par les images compressées.
Le dessin vectoriel avec StarOffice ou OpenOffice - Tutoriel.
Fiche technique Bureautique proposée par le CREPS Aquitaine sous licence Creative Commons...
Tutoriel informatique pour débutant : Créer des diaporamas avec OpenOffice Impression. Tutoriel réalisé par l'Espace...
Cours de PHP par le PHP Documentation Group. Ce manuel peut être redistribué sous licence GNU General Public License. PHP,...
Document sous licence CC: http://creativecommons.org/licenses/by-sa/2.0/fr/.
Méthodes de programmation systèmes par Emmanuel DESVIGNE. Document sous licence GNU/FDL.
Cours d'introduction aux architectures n-tier dispensé à TELECOM Bretagne. Cours sous licence Creative Commons :...
Livre Blanc : Industrialisation PHP par Alter Way. Document publié sous licence OpenContent.
Document sous licence CC: http://creativecommons.org/licenses/by-sa/2.0/fr/. Java pour le développement d'applications Web.
Aucun commentaire pour cette publication |