vue d’ensemble de l’Architecture graphique Windows

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

diagramme qui montre les API graphiques Windows.

  • Graphics Device Interface (GDI) est l’interface graphique d’origine de Windows. GDI a été écrit pour la première fois pour le Windows 16 bits, puis mis à jour pour les Windows 32 bits et 64 bits.
  • GDI+ a été introduite 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 rastérisation et de mise en page de texte. Vous pouvez utiliser GDI ou Direct2D pour dessiner le texte pixellisé.
  • L’infrastructure DXGI (DirectX Graphics) effectue des tâches de bas niveau, telles que la présentation des frames pour la sortie. La plupart des applications n’utilisent pas directement DXGI. Au lieu de cela, elle sert de couche intermédiaire entre le pilote Graphics et Direct3D.

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

Direct2D est le sujet de ce module. tant que GDI et GDI+ continuent à ê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. dans ce cas, 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 général, 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 requises pour Direct2D, Direct2D revient au rendu logiciel. en général, Direct2D exécute GDI et GDI+ dans la plupart des cas.

Transparence et anticrénelage

Direct2D prend en charge la transparence alpha à accélération matérielle totale (transparence).

GDI offre une prise en charge limitée pour la fusion alpha. La plupart des fonctions GDI ne prennent pas en charge la fusion alpha, bien que GDI prenne en charge la fusion alpha pendant une opération BitBlt. GDI+ prend en charge la transparence, mais la fusion alpha est effectuée par le processeur, de sorte qu’il ne tire pas parti de l’accélération matérielle.

La fusion alpha avec accélération matérielle permet également l’anticrénelage. L' alias est un artefact provoqué par l’échantillonnage d’une fonction continue. Par exemple, lorsqu’une ligne incurvée est convertie en pixels, l’alias peut entraîner une apparence irrégulière. [ 3 ] toute technique qui réduit les artefacts provoqués par les alias est considérée comme une forme d’anticrénelage. Dans les graphiques, l’anticrénelage s’effectue 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) est constitué de pixels noirs qui se rapprochent d’une courbe. Le cercle dessiné par Direct2D (Right) utilise la fusion pour créer une courbe plus lisse.

GDI ne prend pas en charge l’anticrénelage lorsqu’il dessine une géométrie (lignes et courbes). GDI peut dessiner du texte avec anticrénelage à l’aide de ClearType. dans le cas contraire, le texte GDI est également associé à un alias. L’alias est particulièrement visible pour le texte, car les lignes en escalier perturbent la conception des polices, 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 efficaces 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 sont pas dépendantes de la résolution d’écran et peuvent donc être mises à l’échelle en dimensions arbitraires. Les graphiques vectoriels sont particulièrement utiles quand une image doit être mise à l’échelle pour prendre en charge différentes tailles d’analyse ou résolutions d’écran.

Suivant

Gestionnaire de fenêtrage