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:
- ByteAddressBuffer è un buffer di sola lettura.
- RWByteAddressBuffer è un buffer di lettura o scrittura.
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))".
Argomenti correlati