Tipo di buffer
Usare la sintassi seguente per dichiarare una variabile buffer.
Nometipo buffer><; |
---|
Parametri
-
Buffer
-
Parola chiave obbligatoria.
-
Digitare
-
Uno dei tipi scalari, vector e alcuni tipi HLSL di matrice . È possibile dichiarare una variabile buffer con una matrice purché si adatti a 4 quantità a 32 bit. È quindi possibile scrivere
Buffer<float2x2>
. MaBuffer<float4x4>
è troppo grande e il compilatore genererà un errore. -
Nome
-
Stringa ASCII che identifica in modo univoco il nome della variabile.
Esempio
Di seguito è riportato un esempio di dichiarazione di buffer.
Buffer<float4> g_Buffer;
I dati vengono letti da un buffer usando una versione di overload della funzione intrinseca Load HLSL che accetta un parametro di input (un indice integer). Un buffer è accessibile come una matrice di elementi; di conseguenza, in questo esempio viene letto il secondo elemento.
float4 bufferData = g_Buffer.Load( 1 );
Usare la fase di output del flusso per restituire i dati in un buffer.
Commenti
Per il caricamento corretto dal buffer è necessaria una visualizzazione delle risorse SRV (Buffer shader tipizzata) compatibile. Il carico può facoltativamente eseguire una conversione del tipo, ad esempio un buffer RGBA8_UNORM può essere caricato in una float4
variabile. Per gli struct di contazione del buffer, usare invece structuredBuffer .