Vue d’ensemble de l’architecture graphique Windows

Windows fournit plusieurs API C++/COM pour les graphiques. Ces API sont affichées dans le diagramme suivant.

a diagram that shows the windows graphics apis.

  • Graphics Device Interface (GDI) est l’interface graphique d’origine pour Windows. GDI a d’abord été écrit pour Windows 16 bits, puis mis à jour pour les Windows 32 bits et 64 bits.
  • GDI+ a été introduit dans Windows XP comme successeur de GDI. La bibliothèque GDI+ est accessible via un ensemble de classes C++ qui encapsulent les fonctions C plates. Le .NET Framework fournit également une version managée de GDI+ dans l’espace de noms System.Drawing.
  • Direct3D prend en charge les graphiques 3D.
  • Direct2D est une API moderne pour les graphiques 2D, le successeur de GDI et de GDI+.
  • DirectWrite est un moteur de disposition et de ratérisation de texte. Vous pouvez utiliser GDI ou Direct2D pour dessiner le texte ratérisé.
  • DirectX Graphics Infrastructure (DXGI) effectue des tâches de bas niveau, telles que la présentation d’images pour la sortie. La plupart des applications n’utilisent pas DXGI directement. Il sert plutôt de couche intermédiaire entre le pilote graphique et Direct3D.

Direct2D et DirectWrite ont été introduits dans Windows 7. Ils sont également disponibles pour Windows Vista et Windows Server 2008 via une mise à jour de plateforme. Pour plus d’informations, consultez Mise à jour de plateforme pour Windows Vista.

Direct2D est le focus de ce module. Bien que GDI et GDI+ continuent d’être pris en charge dans Windows, Direct2D et DirectWrite sont recommandés pour les nouveaux programmes. Dans certains cas, une combinaison de technologies peut être plus pratique. Pour ces situations, Direct2D et DirectWrite sont conçus pour interagir avec GDI.

Les sections suivantes décrivent certains des avantages de Direct2D.

Accélération matérielle

Le terme accélération matérielle fait référence aux calculs graphiques effectués par l’unité de traitement graphique (GPU) au lieu du processeur. Les GPU modernes sont hautement optimisés pour les types de calcul utilisés dans les graphiques de rendu. En règle générale, plus ce travail est déplacé de l’UC vers le GPU, mieux.

Bien que GDI prenne en charge l’accélération matérielle pour certaines opérations, de nombreuses opérations GDI sont liées au processeur. Direct2D est en couches sur Direct3D et tire pleinement parti de l’accélération matérielle fournie par le GPU. Si le GPU ne prend pas en charge les fonctionnalités nécessaires pour Direct2D, Direct2D revient au rendu logiciel. Dans l’ensemble, Direct2D outperforme GDI et GDI+ dans la plupart des situations.

Transparence et anti-alias

Direct2D prend en charge le mélange alpha entièrement accéléré par matériel (transparence).

GDI a une prise en charge limitée de la fusion alpha. La plupart des fonctions GDI ne prennent pas en charge le mélange alpha, même si GDI prend en charge le mélange alpha pendant une opération de bitblt. GDI+ prend en charge la transparence, mais le mélange alpha est effectué par le processeur, de sorte qu’il ne bénéficie pas de l’accélération matérielle.

Le mélange alpha accéléré par le matériel permet également l’anti-aliasing. L’alias est un artefact provoqué par l’échantillonnage d’une fonction continue. Par exemple, lorsqu’une ligne courbe est convertie en pixels, l’alias peut entraîner une apparence déboguée. [3] Toute technique qui réduit les artefacts causés par l’alias est considérée comme une forme d’anti-aliasing. Dans les graphiques, l’anti-aliasing est effectué en mélangeant les bords avec l’arrière-plan. Par exemple, voici un cercle dessiné par GDI et le même cercle dessiné par Direct2D.

an illustration of anti-aliasing techniques in direct2d.

L’image suivante montre un détail de chaque cercle.

a detail of the previous image.

Le cercle dessiné par GDI (gauche) se compose de pixels noirs qui se rapprochent d’une courbe. Le cercle dessiné par Direct2D (droit) utilise le mélange pour créer une courbe plus lisse.

GDI ne prend pas en charge l’anti-aliasing lorsqu’il dessine la géométrie (lignes et courbes). GDI peut dessiner du texte anti-alias à l’aide de ClearType ; mais sinon, le texte GDI est également alias. L’alias est particulièrement visible pour le texte, car les lignes déchiquetées perturbent la conception de police, ce qui rend le texte moins lisible. Bien que GDI+ prend en charge l’anti-aliasing, il est appliqué par l’UC, de sorte que les performances ne sont pas aussi bonnes que Direct2D.

Graphismes vectoriels

Direct2D prend en charge les graphiques vectoriels. Dans les graphiques vectoriels, les formules mathématiques sont utilisées pour représenter des lignes et des courbes. Ces formules ne dépendent pas de la résolution d’écran, afin qu’elles puissent être mises à l’échelle vers des dimensions arbitraires. Les graphiques vectoriels sont particulièrement utiles lorsqu’une image doit être mise à l’échelle pour prendre en charge différentes tailles de moniteur ou résolutions d’écran.

Suivant

Gestionnaire de fenêtres de bureau