Condividi tramite


Come allocare in modo dinamico l'area di una risorsa di streaming

Quando si crea una risorsa di streaming, le dimensioni, le misure dell'elemento di formato e il numero di mipmap e/o sezioni di matrice (se applicabile) determinano il numero di riquadri necessari per ripristinare l'intera superficie. Il layout pixel/byte all'interno dei riquadri è determinato dall'implementazione. Il numero di pixel che rientrano in un riquadro, a seconda delle dimensioni dell'elemento di formato, è fisso e identico se si usa uno swizzle standard o meno.

Il numero di riquadri che verranno utilizzati da una determinata dimensione della superficie e dalla larghezza dell'elemento di formato è ben definito e prevedibile in base alle tabelle nelle sezioni seguenti. Per le risorse che contengono mipmap o casi in cui le dimensioni della superficie non riempiono un riquadro, esistono alcuni vincoli; vedere Compressione mipmap.

Diverse risorse di streaming possono puntare a una memoria identica con formati diversi, purché le applicazioni non si basano sui risultati della scrittura nella memoria con un formato e la lettura con un altro. Tuttavia, le applicazioni possono basarsi sui risultati della scrittura nella memoria con un formato e la lettura con un altro se i formati si trovano nella stessa famiglia di formati (ovvero hanno lo stesso formato padre senza tipi). Ad esempio, DXGI_FORMAT_R8G8B8A8_UNORM e DXGI_FORMAT_R8G8B8A8_UINT sono compatibili tra loro, ma non con DXGI_FORMAT_R16G16_UNORM.

Un'eccezione è la posizione in cui il trasferimento dati da un aliasing di formato a un altro sono ben definiti: se un riquadro contiene completamente 0 per tutti i relativi bit, tale riquadro può essere usato con qualsiasi formato che interpreta il contenuto di memoria come 0 (indipendentemente dal layout di memoria). Quindi, un riquadro potrebbe essere cancellato per 0x00 con il formato DXGI_FORMAT_R8_UNORM e quindi usato con un formato come DXGI_FORMAT_R32G32_FLOAT e il contenuto apparirebbe ancora (0,0f,0,0f).

Il layout dei dati all'interno di un riquadro non dipende dalla posizione in cui viene eseguito il mapping del riquadro in una risorsa complessiva. Ad esempio, un riquadro può essere riutilizzato in posizioni diverse di una superficie con un comportamento coerente in tutte le posizioni.

In questa sezione

Argomento Descrizione

Affiancamento delle risorse secondarie Texture2D e Texture2DArray

Queste tabelle mostrano come vengono affiancate le sottorisorse Texture2D e Texture2DArray .

Affiancamento delle risorse secondarie Texture3D

Questa tabella mostra come vengono affiancate le sottorisorse Texture3D siano affiancate.

Divisione in riquadri di buffer

Una risorsa Buffer è divisa in riquadri da 64 KB, con spazio vuoto nell'ultimo riquadro se la dimensione non è un multiplo di 64 KB.

Compressione Mipmap

Alcuni mip (per sezione di matrice) possono essere compressi in alcuni riquadri, a seconda delle dimensioni, del formato, del numero di mipmap e delle sezioni di matrice di una risorsa di streaming.

 

Creazione di risorse di streaming