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 numeri di colonna e di riga

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

Mapping di texel allo spazio dello schermo

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

Ogni texel in una trama può essere specificato dalla coordinata del 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 di texel si trovano nell'intervallo compreso tra 0,0 e 1,0 inclusi. Le applicazioni Direct3D specificano coordinate di trama in termini di valori v, molto simili a coordinate cartesiane 2D sono specificate in termini di coordinate x,y. Tecnicamente, il sistema può effettivamente elaborare coordinate di trama al di fuori dell'intervallo di 0,0 e 1,0 e lo fa usando i parametri impostati per l'indirizzamento delle trame. Per altre informazioni, vedere modalità di indirizzamento delle trame (Direct3D 9).

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

illustrazione del mapping dello stesso indirizzo di trama a diversi texel in trame diverse

Una versione semplificata del processo di mapping dei texel è illustrata nella figura seguente. Certo, questo esempio è estremamente semplice. Per informazioni più dettagliate, vedere Mapping diretto di texel a pixel (Direct3D 9).

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

Per questo esempio, un pixel, mostrato a sinistra dell'illustrazione, è idealizzato in un quadrato di colore. Gli indirizzi dei quattro angoli del pixel vengono mappati alla primitiva 3D nello spazio oggetti. La forma del pixel viene spesso distorta a causa della forma della primitiva nello spazio 3D e a causa dell'angolo di visualizzazione. Gli angoli dell'area della superficie sulla primitiva che corrispondono agli angoli del pixel vengono quindi mappati nello spazio della trama. Il processo di mapping distorce 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 delle trame. Per altre informazioni, vedere Filtro trame (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 esemplivi l'intera trama sull'intera parete. Le coordinate della trama assegnate dall'applicazione ai 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 un mezzo, è possibile distorcere la trama per adattarsi alla parete più piccola oppure 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 delle trame usato influirà sulla qualità dell'immagine. Per altre informazioni, vedere Filtro trame (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, la trama coordina l'applicazione assegna ai vertici della primitiva in questo esempio sono (0,0,0,0,5), (1,0,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 non compreso nell'intervallo compreso tra 0,0 e 1,0 inclusi, è necessario impostare anche la modalità di indirizzamento della trama. Per altre informazioni, vedere modalità di indirizzamento delle trame (Direct3D 9).

Coordinate delle trame e fasi trama

Le coordinate delle trame sono associate alle trame tramite fasi di trama. Le trame vengono assegnate alle fasi della 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 indicati con un indice in base zero: 0 - 7. Ci sono fino a otto fasi di fusione delle 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 le stesse coordinate della trama.

Altre informazioni sono contenute negli argomenti seguenti.

  • formati di coordinate trama (Direct3D 9)
  • l'elaborazione delle coordinate delle trame (Direct3D 9)

trame Direct3D