Condividi tramite


RWTexture2D

Risorsa di lettura/scrittura.

Metodo Descrizione
GetDimensions Ottiene le dimensioni della risorsa.
Load Legge i dati della trama.
Operatore[] Ottiene una variabile di risorsa.

 

È possibile prefisso oggetti RWTexture2D con la classe di archiviazione globalmentecoherent. Questa classe di archiviazione causa barriere di memoria e sincronizzazione per scaricare i dati nell'intera GPU, in modo che altri gruppi possano visualizzare le scritture. Senza questo identificatore, una barriera di memoria o una sincronizzazione scarica solo una vista di accesso non ordinata (UAV) all'interno del gruppo corrente.

Un oggetto RWTexture2D richiede un tipo di elemento in un'istruzione di dichiarazione per l'oggetto. Ad esempio, la dichiarazione seguente non è corretta:

// The following declaration is incorrectly coded.
RWTexture2D myTexture;

La dichiarazione seguente è corretta:

// The following declaration is correctly coded.
RWTexture2D<float> tex;

Poiché un oggetto RWTexture2D è un oggetto di tipo UAV, le relative proprietà differiscono da un oggetto SRV (Shader Resource View), ad esempio un oggetto Texture2D . Ad esempio, è possibile leggere e scrivere in un oggetto RWTexture2D, ma è possibile leggere solo da un oggetto Texture2D.

Un oggetto RWTexture2D non può usare metodi da un oggetto Texture2D , ad esempio Sample. Tuttavia, poiché è possibile creare più tipi di visualizzazione nella stessa risorsa, è possibile dichiarare più tipi di trama come singola trama in più shader. Ad esempio, i frammenti di codice seguenti mostrano come dichiarare e usare un oggetto RWTexture2D come tex in un shader di calcolo e quindi dichiarare e usare un oggetto Texture2D come tex in un pixel shader.

Nota

Il runtime applica determinati modelli di utilizzo quando si creano più tipi di visualizzazione nella stessa risorsa. Ad esempio, il runtime non consente di disporre di un mapping UAV per una risorsa e di un mapping SRV per la stessa risorsa attiva contemporaneamente.

 

Il codice seguente è per lo shader di calcolo:

RWTexture2D<float> tex;
[numthreads(groupDim_x, groupDim_y, 1)]
void main(
    uint3 groupId : SV_GroupID,
    uint3 groupThreadId : SV_GroupThreadID,
    uint3 dispatchThreadId : SV_DispatchThreadID,
    uint groupIndex : SV_GroupIndex)
{
    tex [dispatchThreadId.xy] = <something>;
}

Il codice seguente è per il pixel shader:

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
    float2 tex : TEXTURE;
};

Texture2D<float> tex;
float4 main(PixelShaderInput input) : SV_TARGET
{
    return tex.Sample(TextureSampler, input.tex);
}

Modello di shader minimo

Questo oggetto è supportato nei modelli shader seguenti.

Modello di shader Supportato
Modelli shader 5 e versioni successive dello shader

 

Questo oggetto è supportato per i tipi di shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
x x

 

Vedi anche

Oggetti Shader Model 5