Oggetto Texture

In Direct3D 10 specificare i campionatori e le trame in modo indipendente; Il campionamento delle trame viene implementato usando un oggetto trama basato su modelli. Questo oggetto trama basato su modelli 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.

Ecco la sintassi per la creazione di tutti gli oggetti trama ,ad eccezione degli oggetti multicampionamento.

Object1 [<Type>] Name;

Gli oggetti multicampionato (Texture2DMS e Texture2DMSArray) richiedono che le dimensioni della trama siano 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 multicampionate 2D

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

Digitare

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.

Campioni

Numero di campioni (intervallo compreso tra 1 e 128).

Esempio 1

Ecco 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
CalculateLevelOfDetailUncmaked Calcolare il LOD, restituire un risultato non crittografato. x
Raccogliere Ottiene i quattro campioni (solo componente rosso) che verrebbero 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
Load 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 Campiona una trama. x x
SampleBias Campionare una trama, dopo aver applicato il valore di distorsione al livello mipmap. x x
SampleCmp Campionare una trama usando un valore di confronto per rifiutare i campioni. x x
SampleCmpLevelZero Campionare una trama (solo livello mipmap 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 Campionare una trama sul livello mipmap specificato. x x x x x x

Tipo restituito

Il tipo restituito di un metodo 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.

Tipo Descrizione
float Float a 32 bit (vedere Regole a virgola mobile per le differenze rispetto al float IEEE)
INT Intero con segno a 32 bit
int senza segno Intero senza segno a 32 bit
snorm Float a 32 bit compreso nell'intervallo compreso tra -1 e 1 (vedere Regole a virgola mobile per le differenze rispetto al float IEEE)
unorm Float a 32 bit compreso nell'intervallo compreso tra 0 e 1 inclusi (vedere Regole a virgola mobile per le differenze rispetto al float IEEE)
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, inclusa 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'oggetto 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'A mancante è 1,0f. Se il modulo è SINT o UINT, il valore predefinito per l'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 tipo di risorsa trama DXGI_FORMAT_R16_SINT , 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 minimo shader

Questo oggetto è supportato nei modelli di shader seguenti.

Modello di shader Supportato
Modello shader 4 e versioni successive dello shader

Vedi anche

Modello shader 4