Introduction à Direct3D :
Le principe des couches HAL et HEL est aussi présent ici, intimement lié avec celles de DirectDraw. Deux modes de fonctionnement peuvent être exploités par une application : le mode mémorisé (retained mode) et le mode immédiat (immediate mode). Le premier permet la gestion de scènes 3D (définition et positionnement des objets, règles de déplacement) à un assez haut niveau tandis que le second est optimisé et se charge du rendu des polygones et vecteurs.
Le mode mémorisé est construit par-dessus le mode immédiat et DirectDraw. Le mode immédiat est spécialement conçu pour permettre un portage des applications (jeux) tournant sous DOS, dont les moteurs 3D sont en général développés en interne. Les transformations géométriques sont basées sur des opérations matricielles (4x4). Le système maintient plusieurs systèmes de coordonnées : le port d’affichage, la vue 2D et le monde 3D, permettant à l’application de passer aisément de l’un à l’autre. Le système d’éclairage maintient une liste des sources de lumière et gère l’éclairage ambiant et la nature des matériaux. Les réflexions sont calculées par rendu diffus ou spéculaire selon les matériaux. La transparence est mise à contribution pour restituer les effets de brouillard et d’atténuation en fonction de la distance. Par ailleurs, un format de fichier Direct3D permet de stocker les éléments d'une scène, les descriptions de mouvement et de rendu. Les développeurs disposent d’outils leur permettant de convertir des fichiers 3DS ou Autocad vers le format Direct3D. D3DFrame :
Plusieurs constructeurs de puces graphiques utilisent des variantes de D3DFrame pour leurs propres exemples : ATI ou NVidia par exemple.
Le D3DFrame de base est constitué de quatre modules : Chacun de ces modules est constitué d'un fichier source .cpp et d'un fichier en-tête .h. Le fichier source se trouve dans le répertoire d3dim\src du SDK. L'en-tête se trouve dans le répertoire d3dim\include. La bibliothèque de structures se trouve dans le répertoire d3dim\lib. La performance du code étant de bonne qualité j'ai choisi de baser mes exemples sur ce module, il permet d'allégé considérablement le code mais surtout il a déjà été testé sur différentes configurations avec succès donc pourquoi faire compliquer quand on peut faire simple ? |
Revenir au début |
|
| Contacter le WebMaster | © 2000-2006 Poinsu Yannick. Tous droits réservés. |