Unterstützung für Linienzeichnung in D3DX (Direct3D 9)

D3DX ist eine Hilfsprogrammbibliothek, die Hilfsdienste bereitstellt. Es handelt sich um eine Ebene über der Direct3D-Komponente.

D3DX unterstützt ein pixelweites Antialiased-Linien. Linienmuster werden nicht mehr unterstützt.

Die Linienzeichnungsbibliothek emuliert Linien mithilfe von Texturdreiecken und nimmt Folgendes an:

  • Hardware ist über die Direct3D 9-Schnittstellen verfügbar.
  • Es ist mindestens eine Texturstufe verfügbar.
  • Es werden 64x64-Texturen verwendet.
  • Die folgenden Modi sind verfügbar:
    • Bilineare Filterung
    • Clamp-Adressmodus
    • Umbruchadressmodus
    • Alpha op modulate
    • Alphamischung (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
    • Alphatest, wenn die Alphamischung nicht verfügbar ist; Niedrigeres Qualitätsergebnis

Verwenden Sie für antialiased line rendering in Multisample-Renderzielen ID3DXLine , das texturierte Polygone generiert. Die Pixelabdeckungswerte, die durch antialiased line rasterization generiert werden, modulieren den Alphawert des Pixels, der vom Pixelshader berechnet wird. Um eine Antialiased-Linie zu zeichnen, muss eine Anwendung die Alphamischung aktivieren und dann den D3DRS_ANTIALIASEDLINEENABLE Renderzustand auf TRUE festlegen.

Beschreibung der Funktionalität

Die Bibliothek unterstützt das Zeichnen farbiger Linienstreifen mit den folgenden Linienmerkmalen, die jeweils unabhängig von anderen sind:

Hinweis

Es wird keine Mitering unterstützt.

 

Die Bibliothek verwendet native Unterstützung für das Zeichnen von Hardwarelinien (sofern auf dem Gerät verfügbar), nur wenn:

  • Die Linienbreite ist 1.
  • Es ist kein Linienmuster aktiviert.

Einzelne Pixel breite Antialiased-Leitungen werden von einiger Hardware unterstützt, sodass die Bibliothek diese verwendet, falls verfügbar. Der LineCaps-Member der D3DCAPS9-Struktur listet Hardwarefunktionen für Linienzeichnungsgrundtypen auf.

Wenn die Softwarelinienzeichnung verwendet wird, wird jede Zeile zu einem Rechteck erweitert, und vier Scheitelpunkte werden an den Treiber gesendet.

Jedes Liniensegment wird mit zwei Dreiecken gezeichnet. Die Breite des Grundtyps ist die angegebene Breite plus 1,0, was zu einer zusätzlichen Zeile oder Spalte von Pixeln führen kann. Wenn die Linie breiter wird, wird der Antialiasfarbverlauf in der Textur rauer, und vollständig undurchsichtigere Texel werden um die Mitte repliziert. Der Farbverlauf wird in v-Richtung der Textur codiert und in der Regel entlang der u-Richtung repliziert. Der Texturadressierungsmodus für v ist clamp.

Jedes Zeilensegment in der Liste kann als separate Zeile betrachtet werden, die zufällig vom vorherigen Endpunkt aus beginnt.

Die Antialiasingqualität entlang der Kanten parallel zur Länge der ursprünglichen Linie leidet, wenn die Linie breiter wird. Es wird erwartet, dass Linienbreiten, die größer als 32,0 sind, Artefakte an diesen Rändern aufweisen.

D3DX