Condividi tramite


Supporto disegno a linee in D3DX (Direct3D 9)

D3DX è una libreria di utilità che fornisce servizi helper. Si tratta di un livello sopra il componente Direct3D.

D3DX supporta linee antialiased di un singolo pixel di larghezza. I modelli di linea non sono più supportati.

La libreria di disegni a linee emula le linee usando triangoli di trama e presuppone quanto segue:

  • L'hardware è disponibile tramite le interfacce Direct3D 9.
  • È disponibile almeno una fase di texture.
  • Vengono usate trame 64x64.
  • Sono disponibili le modalità seguenti:
    • Filtro bilineare
    • Modalità di blocco degli indirizzi
    • Eseguire il wrapping della modalità indirizzo
    • Modulare alfa op
    • Fusione alfa (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
    • Test alfa se la fusione alfa non è disponibile; risultato di qualità inferiore

Per il rendering delle linee antialiased nelle destinazioni di rendering a più campioni, usare ID3DXLine che genera poligoni con trame. I valori di copertura dei pixel, generati dalla rasterizzazione di linee antialiased, modulano il valore alfa del pixel calcolato dal pixel shader. Per disegnare una linea antialiased, un'applicazione deve abilitare la fusione alfa e quindi deve impostare lo stato di rendering D3DRS_ANTIALIASEDLINEENABLE su TRUE.

Descrizione della funzionalità

La libreria supporta le strisce di linee colorate con le seguenti caratteristiche di linea, ognuna delle quali è indipendente dalle altre:

  • Larghezza della linea
  • Motivo di linea con ripetizione (il contatore del motivo di linea viene reimpostato con ogni chiamata ID3DXLine::Draw o ID3DXLine::DrawTransform. Non viene reimpostato con ogni segmento della striscia di linea.)
  • Antialiasing
  • Linee in stile OpenGL

Nota

Non è supportata alcuna mitra.

 

La libreria utilizza il supporto hardware nativo per il disegno di linee (se disponibile nel dispositivo) solo se:

  • La larghezza della linea è 1.
  • Non è abilitato alcun schema linea.

Le linee antialiased a larghezza a pixel singolo sono supportate da alcuni hardware, quindi la libreria usa questa opzione, se disponibile. Il membro LineCaps della struttura D3DCAPS9 enumera le funzionalità hardware per le primitive di disegno a linee.

Quando si utilizza il disegno a linee software, ogni linea viene espansa in un rettangolo e quattro vertici vengono inviati al driver.

Ogni segmento di linea viene disegnato con due triangoli. La larghezza della primitiva è la larghezza specificata più 1,0, che può comportare una riga o una colonna aggiuntiva di pixel. Man mano che la linea si allarga, la sfumatura antialias nella trama diventa meno fine e un maggior numero di texel completamente opachi si replicano verso il centro. La sfumatura viene codificata nella direzione v della texture e in genere replicata lungo la direzione u. La modalità di indirizzamento del texture per v è clamp.

Ogni segmento di linea nell'elenco può essere considerato una linea separata che si verifica a partire dal punto finale precedente.

La qualità antialiasing lungo i bordi paralleli alla lunghezza della linea originale soffre quando la linea diventa più ampia. È previsto che le larghezze di linea superiori a 32,0 inizieranno a presentare artefatti lungo questi bordi.

D3DX