À propos de Direct2D

Cette rubrique présente Direct2D, une API qui permet aux développeurs Win32 d’effectuer des tâches de rendu de graphiques 2D avec des performances et une qualité visuelle supérieures.

Qu’est-ce que Direct2D ?

Direct2D est une API graphique 2D accélérée par le matériel, en mode immédiat, qui fournit des performances élevées et un rendu de haute qualité pour la géométrie 2D, les bitmaps et le texte. L’API Direct2D est conçue pour interagir avec du code existant qui utilise GDI, GDI+ ou Direct3D.

Direct2D est conçu principalement pour être utilisé par les classes de développeurs suivantes :

  • Développeurs d’applications natives de grande taille, à l’échelle de l’entreprise.
  • Développeurs qui créent des boîtes à outils et des bibliothèques de contrôle pour les utiliser par les développeurs en aval.
  • Développeurs qui ont besoin d’un rendu côté serveur de graphiques 2D.
  • Les développeurs qui utilisent des graphiques Direct3D et ont besoin d’un rendu 2D et texte simple et hautes performances pour les menus, les éléments d’interface utilisateur et les affichages tête haute (HUD).

Pourquoi Direct2D ?

Les principales motivations pour la création d’une API graphique 2D dans Microsoft Windows sont les suivantes :

  • Pour suivre le rythme du niveau croissant de richesse visuelle auquel les utilisateurs De Windows sont habitués.
  • Pour permettre aux développeurs d’écrire du code de rendu 2D qui est mis à l’échelle directement avec le matériel de traitement graphique du PC sur lequel il s’exécute.
  • Pour permettre aux développeurs d’écrire du code pour le rendu de graphiques 2D qui peuvent s’exécuter dans le contexte d’un service.

Ces dernières années, les utilisateurs finaux ont commencé à s’attendre à une plus grande fidélité visuelle dans les expériences numériques. Cette tendance se reflète dans l’électronique grand public. Les appareils GPS, les appareils de lecture multimédia, les téléphones mobiles et les appareils photo numériques offrent des expériences toujours plus riches année après année. Cette tendance peut également être observée dans la diversité des contenus graphiques dans le cinéma, la télévision, les jeux vidéo et sur le Web. Pour suivre le rythme de ces changements, les développeurs sont constamment invités à faire passer leurs applications Windows existantes au niveau supérieur de richesse visuelle.

Les processeurs graphiques des PC Windows modernes ont également évolué de façon régulière, grâce aux progrès réalisés dans les graphismes de jeux vidéo et à certaines parties de l’expérience Windows comme Windows Media Center et Aero. Certaines applications Windows peuvent tirer parti des GPU modernes à l’aide de Microsoft Direct3D et Windows Presentation Foundation (WPF). Bien que Direct3D traite les applications graphiques 3D haut de gamme et que WPF répond aux besoins des développeurs .NET, il existe des lacunes pour les développeurs qui disposent de grandes bases de code de rendu existantes basées sur GDI et GDI+ ou qui souhaitent incorporer des graphiques 2D de haute qualité dans leurs applications Direct3D.

Enfin, la nécessité d’une API graphique pouvant être utilisée dans un service est devenue une exigence émergente pour les développeurs travaillant dans des scénarios de développement web et d’entreprise. Les API de rendu existantes se concentrent sur le rendu côté client dans une session utilisateur unique. Par conséquent, ils peuvent être en deçà dans les domaines de la robustesse et de la scalabilité lorsqu’ils sont utilisés dans un contexte de service. Une nouvelle API est nécessaire pour résoudre ce problème.

Hautes performances avec disponibilité maximale

Direct2D est une bibliothèque en mode utilisateur créée à l’aide de l’API Direct3D 10.1. Cela signifie que les applications Direct2D bénéficient d’un rendu à accélération matérielle sur les GPU standard modernes. L’accélération matérielle est également obtenue sur le matériel Direct3D 9 antérieur à l’aide du rendu Direct3D 10-level-9. Cette combinaison offre d’excellentes performances sur le matériel graphique sur les PC Windows existants.

Notes

À compter de Windows 8, Direct2D est généré à l’aide de l’API Direct3D 11.1.

 

Le diagramme suivant montre l’architecture en couches de Direct2D.

diagramme de l’architecture en couches direct2d

Pour les scénarios où l’utilisation de l’accélération matérielle n’est pas possible, Direct2D inclut un rastériseur logiciel hautes performances. Lors du rendu dans des logiciels, les applications qui utilisent Direct2D affichent des performances de rendu sensiblement meilleures qu’avec GDI+ et avec une qualité visuelle similaire. Le rastériseur logiciel est également conçu pour une utilisation dans un contexte de service.

Le contenu rendu à l’aide de Direct2D peut également être affiché à distance à l’aide de l’infrastructure RDP (Remote Desktop Protocol) dans le système d’exploitation Windows 7. Les développeurs peuvent choisir si le rendu est géré par le GPU sur l’ordinateur d’affichage ou s’il est rendu localement et transmis sous forme de bitmaps. Ce choix peut être effectué en fonction du taux de remplissage requis et de la quantité de primitives graphiques rendues. Lorsque l’ordinateur d’affichage exécute un système d’exploitation antérieur à Windows 7, le rendu de l’affichage à distance est effectué en transmettant des bitmaps sur le réseau.

En fournissant une API unique qui combine les performances de Direct3D et la haute disponibilité en fournissant des logiciels de secours, un bureau à distance et un rendu de service, Direct2D permet aux développeurs d’avoir une implémentation unique pour le rendu hautes performances dans de nombreux scénarios différents.

Qualité visuelle

Les applications qui utilisent Direct2D pour les graphiques peuvent fournir une qualité visuelle supérieure à ce qui peut être obtenu à l’aide de GDI. Direct2D utilise l’anti-attirail par défaut pour offrir des courbes et des lignes d’apparence plus lisses dans le contenu rendu. Il existe également une prise en charge complète de la transparence et du mélange alpha lors du rendu des primitives 2D. Les images suivantes comparent le contenu sous alias rendu à l’aide de GDI (à gauche) avec du contenu anti-attirail rendu par Direct2D (à droite).

illustration de courbes et de lignes rendues dans gdi et dans direct2d

Les développeurs peuvent spécifier un rendu sous alias de graphiques vectoriels. Cela est utilisé dans les scénarios où l’alignement sur des limites de pixels durs est nécessaire, tels que des éléments d’interface utilisateur tels que des pointeurs ou des règles, si le style de sortie GDI doit être mis en correspondance, ou si l’anti-atélisage est effectué en aval dans le processus de rendu via l’antialiasing multi-échantillon ou un autre mécanisme.

Interopérabilité

L’intégration du rendu direct2D est facilitée pour les développeurs grâce à l’interopérabilité au niveau de la surface avec GDI et Direct3D. Les applications qui affichent du contenu principalement avec GDI, GDI+ ou Direct3D peuvent commencer par utiliser Direct2D pour afficher des zones spécifiques de leur application, puis se déplacer au fil du temps vers un modèle où le rendu est effectué principalement via Direct2D, en utilisant GDI principalement pour les plug-ins ou l’extensibilité héritée.

Direct2D facilite également l’utilisation de DirectWrite pour le texte de haute qualité et les fonctionnalités d’imagerie avancées du composant d’acquisition d’images Microsoft Windows (WIC).

Pour plus d’informations sur l’interopérabilité Direct2D, consultez la section Interopérabilité du Kit de développement logiciel (SDK) Direct2D.

Récapitulatif

Microsoft Direct2D permet aux développeurs de créer des fonctionnalités graphiques 2D dans leurs applications qui offrent une qualité visuelle améliorée par rapport à GDI et des caractéristiques de performances qui sont mises à l’échelle avec les GPU modernes. Le modèle d’interopérabilité Direct2D permet aux développeurs de migrer de manière sélective des parties de leur application à la fois avec le rendu GDI, GDI+ ou Direct3D.

Démarrage rapide Direct2D pour Windows 8

Vue d’ensemble de l’API Direct2D.