FAQ DirectX
FAQ DirectXConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 63, dernière mise à jour : 14 juin 2021
DirectGraphics est la bibliothèque DirectX gérant les graphismes, autrement dit la 2D et la 3D. Né avec la version 8 de DirectX, il combine et remplace avantageusement ses ancêtres DirectDraw et Direct3D. l'API de base DirectGraphics fonctionne de pair avec la bibliothèque D3DX, qui apporte de nombreuses fonctionnalités complémentaires (voir https://jeux.developpez.com/faq/directx/?page=dgraphics_generalites#DGRAPHICS_GENERALITES_d3dx).
D3DX est une bibliothèque C++ accompagnant DirectGraphics et fournie dans le SDK de DirectX. Elle se compose d'une multitude de classes et fonctions :
- types mathématiques (matrices, vecteurs, plans, quaternions) ;
- gestion des modèles (meshes, animations, optimisations de la géométrie) ;
- éclairage évolué (spherical harmonics) ;
- gestion des shaders et des effets (chargement, compilation, manipulation des shaders ASM et HLSL) ;
- primitives évoluées (boîtes, cylindres, tores, sphères, texte, lignes, sprites) ;
- texturage avancé (chargement et sauvegarde à partir de nombreux formats de fichiers, conversions de format).
Habituellement D3DX était livré sous forme de bibliothèque statique, mais depuis quelques versions, il faut la lier dynamiquement (et donc ne pas oublier de livrer la DLL correspondante avec votre programme).
Le développement DirectX dans une application MFC diffère du développement classique Win32, principalement dans la gestion des messages et du rendu : il faudra cette fois passer par les mécanismes MFC.
Voici un tutoriel décrivant la marche à suivre pour intégrer DirectX à une application MFC :
Integrating Direct3D 8.1 With MFC Using Visual Studio 6.0 (HTML).
On a parfois du mal à se représenter la manière dont cheminent et interagissent les informations au sein de l'API. Voici un schéma à peu près complet du pipeline d'exécution de DirectGraphics, détaillant les diverses étapes du rendu ainsi que les fonctions/states/caps de l'API associés à chacune d'elle :
The Direct3D 9.0 Graphics Pipeline Poster
Il est important de noter qu'il s'agit d'une vue logique de haut niveau, et non de la manière dont le hardware traite les opérations. Par exemple, le test depth/scissor peut avoir lieu avant le pixel shading tant que celui-ci ne modifie pas les informations de profondeur.
Oui. Le fait qu'une carte graphique soit dite « DirectX 7 » (ou n'importe quelle version de DirectX) ne signifie pas qu'elle ne pourra supporter que cette version. Cela signifie qu'elle sera capable d'utiliser les nouvelles fonctionnalités apportées par cette version.
Ainsi, si vous n'utilisez pas de shaders 3.0 ou de formats de pixels en composantes flottantes (par exemple), vous ne devriez pas avoir de problème pour exécuter votre application sur les cartes qui ne sont pas « DirectX 9 ».