Zugreifen auf Ressourcen

Es gibt mehrere Möglichkeiten, auf Ressourcen zuzugreifen. Unabhängig davon garantiert Direct3D, dass für jede Ressource, auf die außerhalb der Grenzen zugegriffen wird, null zurückgegeben wird.

Access By Byte Offset

Auf zwei neue Puffertypen kann mithilfe eines Byteoffsets zugegriffen werden:

Zugriff nach Index

Ressourcentypen können einen Index verwenden, um auf einen bestimmten Speicherort in der Ressource zu verweisen. Betrachten Sie das folgende Beispiel:

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

In diesem Beispiel werden die 4 Floatwerte, die auf dem Texel an der Position pos in der myTexture 2D-Texturressource gespeichert sind, der myVar-Variablen zugewiesen.

Hinweis

Die Standardeinstellung für den Zugriff auf eine Textur auf diese Weise ist mipmap level zero (die detaillierteste Ebene).

 

Hinweis

Die Zeile "float4 myVar = myTexture[pos];" entspricht "float4 myVar = myTexture.Load(uint3(pos,0));". Access by Index ist eine neue HLSL-Syntaxerweiterung.

 

Hinweis

Mit dem Compiler in der Version juni 2010 des DirectX SDK und höher können Sie alle Ressourcentypen mit Ausnahme von Byteadresspuffern indiziert.

 

Hinweis

Mit dem Compiler juni 2010 und höher können Sie lokale Ressourcenvariablen deklarieren. Sie können diesen Variablen global definierte Ressourcen (z. B. myTexture) zuweisen und sie auf die gleiche Weise wie ihre globalen Entsprechungen verwenden.

 

Access By Mips-Methode

Texturobjekte verfügen über eine mips-Methode (z . B. Texture2D.mips), mit der Sie die mipmap-Ebene angeben können. In diesem Beispiel wird die Farbe gelesen, die bei (7,16) auf mipmap-Ebene 2 in einer 2D-Textur gespeichert ist:

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

Dies ist eine Erweiterung des Compilers vom Juni 2010 und höher. Der Ausdruck "myTexture.mips[2][uint2(x,y)]" entspricht "myTexture.Load(uint3(x,y,2))".

Übersicht über Compute-Shader