Zugreifen auf Ressourcen

Es gibt mehrere Möglichkeiten, auf Ressourcen zu zugreifen. Unabhängig davon garantiert Direct3D, dass 0 (null) für jede Ressource zurückgesetzt wird, auf die über grenzenlose Grenzen zugegriffen wird.

Zugriffs-Byteoffset

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 vier float-Werte, die am Texel an der Pos-Position in der Texturressource myTexture 2D gespeichert sind, der Variablen myVar zugewiesen.

Hinweis

Der Standardwert für den Zugriff auf eine Textur auf diese Weise ist Mipmap-Ebene 0 (die ausführlichste Ebene).

Hinweis

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

Hinweis

Mit dem Compiler in der Version vom Juni 2010 des DirectX SDK und höher können Sie alle Ressourcentypen mit Ausnahme von Byteadressenpuffern indizieren.

Hinweis

Mit dem Compiler vom 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