Architecture de Windows Graphics
publication: 22 novembre 2024 / mis à jour 22 novembre 2024
Introduction
Windows propose plusieurs API C++/COM pour les graphiques. Ces API sont présentées dans le diagramme suivant:
- Graphics Device Interface (GDI) est l'interface graphique originale de Windows. GDI a d'abord été écrite pour Windows 16 bits, puis mise à 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 géré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 mise en page et de rastérisation de texte. Vous pouvez utiliser GDI ou Direct2D pour dessiner le texte rasterisé.
- DirectX Graphics Infrastructure (DXGI) effectue des tâches de bas niveau, telles que la présentation des images pour la sortie. La plupart des applications n'utilisent pas directement DXGI. Il sert plutôt de couche intermédiaire entre le pilote graphique et Direct3D.
Dans eForth Windows, nous ne nous intéresserons que à GDI accessible au travers de Gdi32.dll.
Transparence et anticrénelage
Alors que GDI prend en charge l'accélération matérielle pour certaines opérations, de nombreuses opérations GDI sont liées au processeur. 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, alors Direct2D revient au rendu logiciel. Globalement, Direct2D surpasse GDI et GDI+ dans la plupart des situations.
GDI a une prise en charge limitée du mélange alpha. La plupart des fonctions GDI ne prennent pas en charge le mélange alpha, bien que GDI prenne en charge le mélange alpha pendant une opération bitblt. GDI+ prend en charge la transparence, mais le mélange alpha est effectué par le processeur, il ne bénéficie donc pas de l'accélération matérielle.
Le mélange alpha accéléré par le matériel permet également l'anticrénelage. L'aliasing est un artefact causé par l'échantillonnage d'une fonction continue. Par exemple, lorsqu'une ligne courbe est convertie en pixels, l'aliasing peut provoquer une apparence irrégulière. Toute technique qui réduit les artefacts causés par l'aliasing 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.
GDI ne prend pas en charge l'anti-aliasing lorsqu'il dessine de 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'aliasing est particulièrement visible pour le texte, car les lignes irrégulières perturbent la conception de la police, rendant le texte moins lisible. Bien que GDI+ prenne en charge l'anti-aliasing, il est appliqué par le processeur, de sorte que les performances ne sont pas aussi bonnes que celles de Direct2D.
Catégories des fonctions Gdi32
- Bitmaps
- Brushes
CreateSolidBrush ( color -- HBRUSH )
- Clipping
- Colors
- Coordinate Spaces and Transformations
SetWindowOrgEx ( hdc x y lppt -- fl )
- Device Contexts
- Filled Shapes
Ellipse
Polygon
Rectangle
- Fonts and Text
- Lines and Curves
Arc
LineTo
- Metafiles
Multiple Display Monitorsunused- Painting and Drawing
- Paths
- Pens
CreatePen
Printing and Print Spoolerunused- Rectangles
- Regions
La documentation en ligne pour ces différentes catégories est disponible ici:
Windows GDI
En résumé
L'essentiel des fonctions graphiques et utilisateur passent par deux DLL:
- Gdi32.dll est un fichier système essentiel de Windows qui fait partie intégrante de l'Interface de périphérique graphique (GDI en anglais). Cette interface est le pont entre les applications Windows et le matériel graphique de votre ordinateur.
- User32.dll est un fichier système essentiel dans Windows, souvent appelé "bibliothèque de liens dynamiques". Il constitue une partie intégrante de l'interface de programmation d'applications (API) Windows, offrant un ensemble de fonctions permettant aux programmes d'interagir avec le système d'exploitation au niveau de l'utilisateur.
L'utilisation de Gdiplus.dll n'est faite qu'à titre expérimental. Gdiplus est fortement dépendant de Gdi32. L'appel aux fonctions de Gdiplus n'est pas nécessaire pour nos applications eForth Windows graphiques.
Legal: site web personnel sans commerce / personal site without seling