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.
Tipo Object1 Descrizione
Buffer Buffer
Texture1D Trama 1D
Texture1DArray Matrice di trame 1D
Texture2d Trama 2D
Texture2DArray Matrice di trame 2D
Texture3D Trama 3D
TextureCube Trama del cubo
TextureCubeArray Matrice di trame del cubo
Tipo Object2 Descrizione
Texture2DMS Trama multicampionato 2D
Texture2DMSArray Matrice di trame multicampionamento 2D

  1. Il tipo Buffer supporta la maggior parte dei metodi oggetto trama ad eccezione di GetDimensions.
  2. TextureCubeArray è disponibile nel modello di shader 4.1 o versione successiva.
  3. Il modello shader 4.1 è disponibile in Direct3D 10.1 o versione successiva.

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

Vedi anche

Modello shader 4