Vue d’ensemble de l’architecture graphique Windows

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

diagramme montrant les API graphiques Windows.

  • 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 Windows 32 bits et 64 bits.
  • GDI+ a été introduit dans Windows XP en tant que successeur de GDI. La bibliothèque GDI+ est accessible via un ensemble de classes C++ qui encapsulent des 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 GDI+.
  • DirectWrite est un moteur de disposition et de rastérisation de texte. Vous pouvez utiliser GDI ou Direct2D pour dessiner le texte rastérisé.
  • L’infrastructure graphique DirectX (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 directement DXGI. Au lieu de cela, il sert 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 au centre 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), plutôt que par le processeur. Les GPU modernes sont hautement optimisés pour les types de calcul utilisés dans le rendu des graphiques. En règle générale, plus ce travail est déplacé du processeur vers le GPU, mieux c’est.

Bien que GDI prenne en charge l’accélération matérielle pour certaines opérations, de nombreuses opérations GDI sont liées à l’UC. Direct2D est superposé à 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 à Direct2D, Direct2D revient au rendu logiciel. Dans l’ensemble, Direct2D surperforme GDI et GDI+ dans la plupart des situations.

Transparence et anticrénelage

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

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

La fusion alpha accélérée matériellement permet également l’anticrénelage. L’aliasing est un artefact provoqué par l’échantillonnage d’une fonction continue. Par exemple, lorsqu’une ligne courbée est convertie en pixels, l’alias peut provoquer une apparence déchiquetée. Toute technique qui réduit les artefacts causés par l’aliasing est considérée comme une forme d’anticrénelage. Dans les graphiques, l’anticrénelage est effectué en fusionnant les bords avec l’arrière-plan. Par exemple, voici un cercle dessiné par GDI et le même cercle dessiné par Direct2D.

illustration des techniques d’anticrénelage dans direct2d.

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

détail de l’image précédente.

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

GDI ne prend pas en charge l’anticrénelage lorsqu’il dessine la géométrie (lignes et courbes). GDI peut dessiner du texte avec anticrénelage à l’aide de ClearType ; mais dans le cas contraire, le texte GDI est également alias. Les alias sont particulièrement visibles pour le texte, car les lignes dentelées perturbent la conception de la police, ce qui rend le texte moins lisible. Bien que GDI+ prenne en charge l’anticrénelage, il est appliqué par le processeur, 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. Elles peuvent donc être mises à l’échelle à 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