Prise en charge du dessin de trait dans D3DX (Direct3D 9)

D3DX est une bibliothèque utilitaire qui fournit des services d’assistance. Il s’agit d’une couche au-dessus du composant Direct3D.

D3DX prend en charge les lignes anticrénelées d’une largeur d’un pixel. Les modèles de ligne ne sont plus pris en charge.

La bibliothèque de dessins de traits émule les lignes à l’aide de triangles de texture et suppose les éléments suivants :

  • Le matériel est disponible via les interfaces Direct3D 9.
  • Au moins une étape de texture est disponible.
  • Les textures 64x64 sont utilisées.
  • Les modes suivants sont disponibles :
    • Filtrage bilinéaire
    • Mode d’adresse de serrage
    • Mode d’habillage de l’adresse
    • Module alpha op
    • Fusion alpha (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
    • Test alpha si le mélange alpha n’est pas disponible ; résultat de qualité inférieure

Pour le rendu de ligne anticrénelé dans les cibles de rendu multi-échantillonnage, utilisez ID3DXLine qui génère des polygones texturés. Les valeurs de couverture des pixels, générées par la rastérisation de ligne anticrénelée, modulent la valeur alpha du pixel calculée par le nuanceur de pixels. Pour dessiner une ligne anticrénelée, une application doit activer le mélange alpha, puis définir l’état de rendu D3DRS_ANTIALIASEDLINEENABLE sur TRUE.

Description des fonctionnalités

La bibliothèque prend en charge le dessin de bandes de lignes colorées avec les caractéristiques de ligne suivantes, chacune d’elles étant indépendante des autres :

  • Largeur de ligne
  • Modèle de ligne avec répétition (le compteur de modèle de ligne se réinitialise avec chaque appel ID3DXLine::D raw ou ID3DXLine::D rawTransform . Il ne se réinitialise pas avec chaque segment de la bande de ligne.)
  • Antialiasing
  • Lignes de style OpenGL

Notes

Aucune mitering n’est prise en charge.

 

La bibliothèque utilise la prise en charge du dessin de ligne matériel natif (si disponible sur l’appareil) uniquement si :

  • La largeur de ligne est de 1.
  • Aucun modèle de ligne n’est activé.

Les lignes anticrénelées de largeur d’un pixel sont prises en charge par certains matériels. La bibliothèque l’utilise donc, si elle est disponible. Le membre LineCaps de la structure D3DCAPS9 énumère les fonctionnalités matérielles pour les primitives de dessin de traits.

Lorsque le dessin de ligne logiciel est utilisé, chaque ligne est développée dans un rectangle et quatre sommets sont envoyés au pilote.

Chaque segment de ligne est dessiné avec deux triangles. La largeur de la primitive est la largeur spécifiée plus 1,0, ce qui peut entraîner une ligne ou une colonne supplémentaire de pixels. À mesure que la ligne s’élargit, le dégradé anticrénel dans la texture devient plus grosseur, et des texels plus entièrement opaques sont répliqués autour du milieu. Le dégradé est encodé dans la direction V de la texture et est généralement répliqué le long de la direction U. Le mode d’adressage de texture pour v est clamp.

Chaque segment de ligne de la liste peut être considéré comme une ligne distincte qui commence à partir du point de terminaison précédent.

La qualité de l’anticrénelage le long des bords parallèles à la longueur de la ligne d’origine souffre à mesure que la ligne devient plus large. On s’attend à ce que les largeurs de ligne supérieures à 32,0 commencent à présenter des artefacts le long de ces bords.

D3DX