Oggetto Texture
In Direct3D 10 si specificano i campioni e le trame in modo indipendente; Il campionamento delle trame viene implementato usando un oggetto trama basato su modelli. Questo oggetto templated-texture ha un formato specifico, restituisce un tipo specifico e implementa diversi metodi.
Differenze tra Direct3D9 e Direct3D10:
- In Direct3D 9 i campionatori sono associati a trame specifiche.
- In Direct3D 10 le trame e i campionatori sono oggetti indipendenti. Ogni oggetto trama basato su modelli implementa metodi di campionamento delle trame che accettano sia la trama che il campionatore come parametri di input.
Non tutti i formati sono supportati per tutte le funzioni. È quindi consigliabile usare CheckFeatureSupport per verificare se un formato è supportato per un utilizzo specifico.
Ecco la sintassi per la creazione di tutti gli oggetti trama (ad eccezione degli oggetti multicampionato).
Object1 [<Type>] Name; |
---|
Gli oggetti multicampionati (Texture2DMS e Texture2DMSArray) richiedono che le dimensioni della trama vengano dichiarate in modo esplicito ed espresse come numero di campioni.
Object2 [<Type, Samples>] Name; |
---|
Parametri
Elemento | Descrizione | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oggetto |
Oggetto trama. Deve essere uno dei tipi seguenti.
|
||||||||||||||||||||||||
Type |
(Facoltativo). Qualsiasi tipo HLSL scalare o tipo HLSL vettoriale, circondato da parentesi angolari. Il tipo predefinito è float4. |
||||||||||||||||||||||||
Nome |
Stringa ASCII che specifica il nome dell'oggetto trama. |
||||||||||||||||||||||||
Esempi |
Numero di campioni (intervallo compreso tra 1 e 128). |
Esempio 1
Di seguito è riportato un esempio di dichiarazione di un oggetto trama.
Texture2D <float4> MyTex;
Texture2DMS <float4, 128> MyMSTex;
Metodi dell'oggetto Texture
Ogni oggetto trama implementa determinati metodi; ecco la tabella che elenca tutti i metodi. Vedere la pagina di riferimento per ogni metodo per vedere quali oggetti possono usare tale metodo.
Texture, metodo | Descrizione | vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|---|---|
CalculateLevelOfDetail | Calcolare il LOD, restituire un risultato bloccato. | x | |||||
CalculateLevelOfDetailUnclamped | Calcolare il LOD, restituire un risultato non illuminazione. | x | |||||
Raccogliere | Ottiene i quattro esempi (solo componente rosso) che verranno usati per l'interpolazione bilineare durante il campionamento di una trama. | x | x | x | |||
GetDimensions | Ottiene la dimensione della trama per un livello mipmap specificato. | x | x | x | x | x | x |
GetDimensions (MultiSample) | Ottiene la dimensione della trama per un livello mipmap specificato. | x | x | x | |||
GetSamplePosition | Ottiene la posizione dell'esempio specificato. | x | x | x | |||
Carico | Caricare i dati senza filtri o campionamento. | x | x | x | x | x | x |
Caricamento (multisample) | Caricare i dati senza filtri o campionamento. | x | x | x | x | ||
Esempio | Esempio di una trama. | x | x | ||||
SampleBias | Esempio di una trama, dopo aver applicato il valore di distorsione al livello mipmap. | x | x | ||||
SampleCmp | Esempio di una trama, usando un valore di confronto per rifiutare i campioni. | x | x | ||||
SampleCmpLevelZero | Esempio di una trama (solo mipmap livello 0), usando un valore di confronto per rifiutare i campioni. | x | x | x | x | x | x |
SampleGrad | Campionare una trama usando una sfumatura per influenzare il modo in cui viene calcolata la posizione del campione. | x | x | x | x | x | x |
SampleLevel | Esempio di una trama sul livello mipmap specificato. | x | x | x | x | x | x |
Tipo restituito
Il tipo restituito di un metodo dell'oggetto trama è float4, a meno che non venga specificato diversamente, ad eccezione degli oggetti trama anti-aliasing multicampionato che richiedono sempre il tipo e il numero di campioni specificati. Il tipo restituito corrisponde al tipo di risorsa trama (DXGI_FORMAT). In altre parole, può essere uno dei tipi seguenti.
Type | Descrizione |
---|---|
float | Float a 32 bit (vedere Regole a virgola mobile per le differenze rispetto a I edizione Enterprise E float) |
int | Intero con segno a 32 bit |
unsigned int | Intero senza segno a 32 bit |
snorm | Float a 32 bit nell'intervallo compreso tra -1 e 1 inclusi (vedere Regole a virgola mobile per le differenze tra I edizione Enterprise E float) |
unorm | Float a 32 bit compreso nell'intervallo compreso tra 0 e 1 (vedere Regole a virgola mobile per le differenze rispetto a I edizione Enterprise E float) |
qualsiasi tipo di trama o struct | Il numero di componenti restituiti deve essere compreso tra 1 e 3 inclusi. |
Inoltre, il tipo restituito può essere qualsiasi tipo di trama incluso una struttura, ma deve essere minore di 4 componenti, ad esempio un tipo float1 che restituisce un componente.
Valori predefiniti per i componenti mancanti in una trama
Il valore predefinito per i componenti mancanti in un tipo di risorsa trama è zero per qualsiasi componente ad eccezione del componente alfa (A); il valore predefinito per l'elemento A mancante è uno. Il modo in cui questo appare allo shader dipende dal tipo di risorsa trama. Prende il formato del primo componente tipizzato che è effettivamente presente nel tipo di risorsa trama (a partire dalla sinistra in ordine RGBA). Se questo modulo è UNORM o FLOAT, il valore predefinito per l'oggetto A mancante è 1,0f. Se il modulo è SINT o UINT, il valore predefinito per l'elemento A mancante è 0x1.
Ad esempio, quando uno shader legge il tipo di risorsa trama DXGI_FORMAT_R24_UNORM_X8_TYPELESS, i valori predefiniti per G e B sono zero e il valore predefinito per A è 1,0f; quando uno shader legge il tipo di risorsa trama DXGI_FORMAT_R16G16_UINT, il valore predefinito per B è zero e il valore predefinito per A è 0x00000001; quando uno shader legge il DXGI_FORMAT_R16_SINT tipo di risorsa trama, i valori predefiniti per G e B sono zero e il valore predefinito per A è 0x00000001.
Esempio 2
Di seguito è riportato un esempio di campionamento delle trame usando un metodo di trama.
sampler MySamp;
Texture2D <float4> MyTex;
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
return MyTex.Sample( MySamp, TexCoords[0] ));
}
Modello di shader minimo
Questo oggetto è supportato nei modelli di shader seguenti.
Modello di shader | Supportata |
---|---|
Modello shader 4 e versioni successive dello shader | yes |