/* Autres entrées du fichier en-tête concernant le placage de texture sur les polygone*/ /* Affiche le polygone décrit par la liste de points PointList avec un placage de texture*/ #define DRAW-TEXTURED-POLYGON(PointList.NumPoints,TexVerts.TexMap) Polygon.Length = NumPoints; Polygon.PointPtr = PointList; DrawTexturedPolygon(&Polygon, TexVerts, TexMap); #define FIXED_TO_INT(FixedVal) ((int) (FixedVal >> 16)) #define ROUND_FIXED_TO_INT(FixedVal) \ ((int) ((FixedVal + DOUBLE_TO_FIXED(O.5))>> 16)) /* Reprend le pixel spécifié depuis la bitmap dans la largeur spécifiée. */ #define GET_IMAGE_PIXEL(TexMapBits, TexMapWidth, X. Y) TexMapBits[(Y * TexMapWidth) + XI /* Masques pour indiquer les types d'illumination dans la structure Face */ #define NO_SHADING OX0000 #define AMBIENT_SHADING 0xOO01 #define DIFFUSE_SHADING OxOO02 #define TEXTURE-MAPPED_SHADING OxOO04 /* Décrit un placage de texture typedef struct { int TexMapWidth; /* largeur du placage de texture en octets */ char*TexMapBits; /* pointeur sur la bitmap de texture } TextureMap; /* Structure décrivant l'une des faces d'un objet (un polygone) typedef struct { int * VertNums; * /pointeur sur la liste des index des points de ce polygone dans la liste des points. Le premier index doit sélectionner les points de fin et de début, respectivement, du vecteur unitaire normal du polygone. Le deuxième point devrait être un point actif du polygone */ int NumVerts; /*nombre de points d'une face, ne comprend pas le point initial qui devrait être la fin du vecteur unitaire normal qui commence au second index dans VertNums */ int Colorlndex-, /* index direct de la palette; utilisées pour seulement les faces non illuminées */ ModelColor FuIlColor; /* couleur du polygone */ int ShadingType; /* rien, ni ambiant, ni diffuse, ni placage de texture, etc. */ TextureMap * TexMap; /* pointeur sur la bitmap pour le placage de texture. */ Point * TexVerts; /* pointeur sur la liste des points de ce polygone, dans les coordonnées TextureMap. L'index n doit correspondre à l'index n + 1 dans VertNums, (+ 1 pour sauter le point final unitaire normal dans VertNums)*/ }Face; extern void DrawTexturedPolygon(PointListHeader *, Point , TextureMap) ;