Condividi tramite


Coordinate trama (Direct3D 9)

La maggior parte delle trame, come le bitmap, è una matrice bidimensionale di valori di colore. Le trame della mappa dell'ambiente cubico sono un'eccezione. Per informazioni dettagliate, vedere Mapping dell'ambiente cubico (Direct3D 9). I singoli valori di colore sono denominati elemento trama o texel. Ogni texel ha un indirizzo univoco nella trama. L'indirizzo può essere considerato come una colonna e un numero di riga, etichettati rispettivamente nell'illustrazione seguente.

illustrazione di un indirizzo texel come colonna e numeri di riga

Le coordinate della trama si trovano nello spazio della trama. Ovvero, sono relativi alla posizione (0,0) nella trama. Quando una trama viene applicata a una primitiva nello spazio 3D, gli indirizzi texel devono essere mappati in coordinate oggetto. Devono quindi essere tradotti in coordinate dello schermo o posizioni pixel.

Mapping di Texels allo spazio dello schermo

Direct3D esegue il mapping dei texel nello spazio della trama direttamente ai pixel nello spazio dello schermo, ignorando il passaggio intermedio per una maggiore efficienza. Questo processo di mapping è effettivamente un mapping inverso. Vale a dire, per ogni pixel nello spazio dello schermo, viene calcolata la posizione del texel corrispondente nello spazio della trama. Il colore della trama in corrispondenza o intorno a quel punto viene campione. Il processo di campionamento è denominato filtro trama. Per altre informazioni, vedere Filtro trama (Direct3D 9).

Ogni texel in una trama può essere specificato dalla coordinata texel. Tuttavia, per eseguire il mapping dei texel alle primitive, Direct3D richiede un intervallo di indirizzi uniforme per tutti i texel in tutte le trame. Pertanto, usa uno schema di indirizzamento generico in cui tutti gli indirizzi texel si trovano nell'intervallo di 0,0 a 1,0 inclusivo. Le applicazioni Direct3D specificano le coordinate della trama in termini di valori,v, molto simili alle coordinate cartesiane 2D vengono specificate in termini di coordinate x,y. Tecnicamente, il sistema può effettivamente elaborare le coordinate della trama all'esterno dell'intervallo di 0,0 e 1.0 e lo fa usando i parametri impostati per l'indirizzamento della trama. Per altre informazioni, vedere Modalità di indirizzamento trama (Direct3D 9).

Un risultato di questo è che gli indirizzi di trama identici possono eseguire il mapping a coordinate texel diverse in trame diverse. Nella figura seguente l'indirizzo della trama è (0.5.1.0). Tuttavia, poiché le trame sono dimensioni diverse, l'indirizzo della trama viene mappato a diversi texel. Trama 1, a sinistra, è 5x5. L'indirizzo della trama (0,5,1.0) esegue il mapping a texel (2,4). Trama 2, a destra, è 7x7. L'indirizzo della trama (0,5,1.0) viene mappato a texel (3,6).

illustrazione dello stesso mapping degli indirizzi di trama a diversi texel in trame diverse

Nella figura seguente viene illustrata una versione semplificata del processo di mapping texel. È vero che questo esempio è estremamente semplice. Per informazioni più dettagliate, vedere Mapping diretto dei texel ai pixel (Direct3D 9).

illustrazione di pixel (quadrato di colore) mappato nello spazio degli oggetti

Per questo esempio, un pixel, visualizzato a sinistra dell'illustrazione, è idealizzato in un quadrato di colore. Gli indirizzi dei quattro angoli del pixel vengono mappati alla primitiva 3D nello spazio degli oggetti. La forma del pixel è spesso distorta a causa della forma della primitiva nello spazio 3D e a causa dell'angolo di visualizzazione. Gli angoli dell'area di superficie sulla primitiva che corrispondono agli angoli del pixel vengono quindi mappati nello spazio trama. Il processo di mapping stravolge di nuovo la forma del pixel, che è comune. Il valore di colore finale del pixel viene calcolato dai texel nell'area in cui viene mappato il pixel. Si determina il metodo usato da Direct3D per arrivare al colore del pixel quando si imposta il metodo di filtro trama. Per altre informazioni, vedere Filtro trama (Direct3D 9).

L'applicazione può assegnare coordinate di trama direttamente ai vertici. Questa funzionalità consente di controllare la parte di una trama mappata in una primitiva. Si supponga, ad esempio, di creare una primitiva rettangolare esattamente la stessa dimensione della trama nella figura seguente. In questo esempio si vuole che l'applicazione mappa l'intera trama sull'intera parete. Le coordinate della trama assegnano all'applicazione i vertici della primitiva sono (0,0,0,0,0), (1.0.0.0), (1.0,1.0) e (0,0,1.0).

illustrazione di una parete mappata a trama

Se si decide di ridurre l'altezza della parete di una metà, è possibile distorcere la trama per adattarsi alla parete più piccola oppure è possibile assegnare coordinate di trama che causano l'uso della metà inferiore della trama.

Se si decide di distorcere o ridimensionare la trama per adattarsi alla parete più piccola, il metodo di filtro della trama usato influenzerà la qualità dell'immagine. Per altre informazioni, vedere Filtro trama (Direct3D 9).

Se, invece, si decide di assegnare coordinate di trama per fare in modo che Direct3D usi la metà inferiore della trama per la parete più piccola, le coordinate della trama assegnano ai vertici della primitiva in questo esempio sono (0,0,0,0,5), (1.0.0.5), (1.0,1.0) e (0.0.1.0). Direct3D applica la metà inferiore della trama alla parete.

È possibile che le coordinate della trama di un vertice siano maggiori di 1,0. Quando si assegnano coordinate di trama a un vertice che non si trova nell'intervallo di 0,0 a 1,0 inclusivo, è necessario impostare anche la modalità di indirizzamento della trama. Per altre informazioni, vedere Modalità di indirizzamento trama (Direct3D 9).

Coordinate della trama e fasi trama

Le coordinate della trama sono associate alle trame in base alle fasi della trama. Le trame vengono assegnate alle fasi di trama con SetTexture(stageIndex, pTexture). Vedere IDirect3DDevice9::SetTexture.

Un codice FVF (Flexible Vertex Format) può definire fino a otto set di coordinate di trama. I dati delle coordinate della trama vengono forniti dall'utente nei dati dei vertici. I dati vengono definiti con un indice in base zero: 0 - 7. Ci sono fino a otto fasi di fusione di trame. Una trama è associata a una fase specifica usando SetTexture( stageIndex, pTexture).

Al termine, qualsiasi set di coordinate della trama può essere usato da qualsiasi fase. Ogni set di coordinate è associato a una fase usando SetTextureStageState( stageIndex, D3DTSS_TEXCOORDINDEX, textureCoordinateIndex ). Vedere IDirect3DDevice9::SetTextureStageState. In questo modo, le fasi di fusione possono essere configurate per usare qualsiasi trama e qualsiasi coordinata di trama. Più di una fase possono usare le stesse trame o coordinate della trama.

Altre informazioni sono contenute negli argomenti seguenti.

Trame Direct3D