Intro :
La bibliothèque D3DX (D3DX utility library) implémente plusieurs fonctions courantes afin de faciliter certaines tâches d’utilisation de l’API 3D DirectX 10.
Nous verrons les objets de cette bibliothèque suivant :
– ID3DX10Sprite
– ID3DX10Font
– ID3DX10Mesh
Prérequis :
– Savoir comment initialiser correctement DirectX 10 (voir ces articles)
Explications :
ID3DX10Sprite :
Permet de simplifier l’affichage d’images 2D.
On créé cet objet avec la fonction : D3DX10CreateSprite()
J’ai déjà expliqué son utilisation dans cet article (dans la première méthode)
ID3DX10Font :
Permet d’afficher du texte à l’écran avec une police de font donnée.
On déclare les objets ID3DX10Font et ID3DX10Sprite :
ID3DX10Font* m_pFont; ID3DX10Sprite* m_pSprite;
On initialise plus loin ces objets comme suit :
// Il faut créer un objet ID3DX10Sprite D3DX10CreateSprite(m_pd3dDevice, 0, &m_pSprite); /* Détaille les attributs de cette police d'affichage */ D3DX10_FONT_DESC fd; // Définit la hauteur d'un caractère de cette police fd.Height = 30; // Définit la largeur d'un caractère de cette police fd.Width = 18; fd.Weight = 0; fd.MipLevels = 4; // En italique ou non fd.Italic = false; fd.CharSet = OUT_DEFAULT_PRECIS; fd.Quality = DEFAULT_QUALITY; fd.PitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; // Définit le nom de la police à utiliser wcscpy(fd.FaceName, L"Impact"); D3DX10CreateFontIndirect(m_pd3dDevice, &fd, &m_pFont);
Dans la boucle de rendu on ajoute :
EnableZBuffer(false);
m_pSprite->Begin(D3DX10_SPRITE_SAVE_STATE);
m_pFont->DrawText(m_pSprite, L"Hello World!", -1, &rectangle, DT_NOCLIP, color);
m_pSprite->End();
EnableZBuffer(true);
Le paramètre D3DX10_SPRITE_SAVE_STATE permet de restaurer les états du rendu 3D après l’appel End() comme ils étaient configurés avant l’appel Begin().
On désactive l’écriture sur le Z-Buffer pour préserver la profondeur de ce qui est affiché avant l’appel à m_pFontText().
ID3DX10Mesh :

