Accesso alle risorse

Esistono diversi modi per accedere alle risorse. Indipendentemente dal fatto, Direct3D garantisce di restituire zero per qualsiasi risorsa a cui si accede all'esterno dei limiti.

Access By Byte Offset

È possibile accedere a due nuovi tipi di buffer usando un offset di byte:

Access By Index

I tipi di risorsa possono usare un indice per fare riferimento a una posizione specifica nella risorsa. Prendere in considerazione questo esempio:

uint2 pos;
Texture2D<float4> myTexture;
float4 myVar = myTexture[pos];

In questo esempio vengono assegnati i 4 valori float archiviati nel texel che si trova nella posizione pos nella risorsa trama myTexture 2D alla variabile myVar .

Nota

L'impostazione predefinita per l'accesso a una trama in questo modo è il livello mipmap zero (il livello più dettagliato).

 

Nota

La riga "float4 myVar = myTexture[pos];" equivale a "float4 myVar = myTexture.Load(uint3(pos,0));". L'accesso per indice è un nuovo miglioramento della sintassi HLSL.

 

Nota

Il compilatore nella versione di giugno 2010 di DirectX SDK e versioni successive consente di indicizzare tutti i tipi di risorse ad eccezione dei buffer degli indirizzi dei byte.

 

Nota

Il compilatore giugno 2010 e versioni successive consente di dichiarare variabili di risorsa locali. È possibile assegnare risorse definite a livello globale (ad esempio myTexture) a queste variabili e usarle allo stesso modo delle controparti globali.

 

Access By Mips, metodo

Gli oggetti Texture hanno un metodo mips ,ad esempio Texture2D.mips, che è possibile usare per specificare il livello mipmap. Questo esempio legge il colore archiviato a (7,16) sul livello mipmap 2 in una trama 2D:

uint x = 7;
uint y = 16;
float4 myColor = myTexture.mips[2][uint2(x,y)];

Si tratta di un miglioramento del compilatore giugno 2010 e versioni successive. L'espressione "myTexture.mips[2][uint2(x,y)]" equivale a "myTexture.Load(uint3(x,y,2))".

Panoramica di Compute Shader