Sample(S,float,int,float,uint)-Funktion (HLSL-Referenz)

Beispiel für eine Textur2D mit einem optionalen Wert zum Klammern von LOD-Werten (Sample Level of Detail) und gibt status des Vorgangs zurück.

Hinweis

Erfordert Shadermodell 5 oder höher.

 

Syntax

DXGI_FORMAT Sample(
  in  SamplerState S,
  in  float Location,
  in  int Offset,
  in  float Clamp,
  out uint Status
);

Parameter

S [in]

Ein Samplerzustand. Dies ist ein In einer Effektdatei deklariertes Objekt, das Zustandszuweisungen enthält.

Standort [in]

Texturkoordinaten Der Argumenttyp ist vom Texturobjekttyp abhängig.

Texture-Object Typ Parametertyp
Texture1D float
Texture1DArray, Texture2D float2
Texture2DArray, Texture3D, TextureCube float3
TextureCubeArray float4

 

Offset [in]

Ein optionaler Texturkoordinatenoffset, der für jeden Texturobjekttyp verwendet werden kann; der Offset wird vor der Stichprobenentnahme auf die Position angewendet. Die Texturoffsets müssen statisch sein. Der Argumenttyp ist vom Texturobjekttyp abhängig. Weitere Informationen finden Sie unter Anwenden von Texturkoordinatenoffsets.

Texture-Object Typ Parametertyp
Texture1D, Texture1DArray INT
Texture2D, Texture2DArray int2
Texture3D int3
TextureCube, TextureCubeArray Nicht unterstützt

 

Klemme [in]

Ein optionaler Wert zum Klammern von BEISPIEL-LOD-Werten. Wenn Sie beispielsweise 2.0f für den Klemmwert übergeben, stellen Sie sicher, dass kein einzelnes Beispiel auf eine MIP-Ebene unter 2,0f zugreift.

Status [out]

Der Status des Vorgangs. Sie können nicht direkt auf die status zugreifen. Übergeben Sie stattdessen die status an die systeminterne Funktion CheckAccessFullyMapped. CheckAccessFullyMapped gibt TRUE zurück, wenn alle Werte aus dem entsprechenden Sample-, Gather- oder Load-Vorgang auf zugeordnete Kacheln in einer gekachelten Ressource zugegriffen haben. Wenn Werte von einer nicht zugeordneten Kachel übernommen wurden, gibt CheckAccessFullyMappedFALSE zurück.

Rückgabewert

Das Texturformat, das einer der in DXGI_FORMAT aufgeführten typisierten Werte ist.

Bemerkungen

Textursampling verwendet die Texelposition, um einen Texelwert nachzuschlagen. Vor dem Lookup kann ein Offset auf die Position angewendet werden. Der Samplerzustand enthält die Sampling- und Filteroptionen. Diese Methode kann in einem Pixel-Shader aufgerufen werden, wird aber in einem Vertex-Shader oder einem Geometrie-Shader nicht unterstützt.

Verwenden Sie einen Offset nur auf einer ganzzahligen MIP-Ebene. Andernfalls können Sie je nach Hardwareimplementierung oder Treibereinstellungen unterschiedliche Ergebnisse erzielen.

Berechnen von Texelpositionen

Texturkoordinaten sind Gleitkommawerte, die auf Texturdaten verweisen, was auch als normalisierter Texturraum bezeichnet wird. Adressumbruchmodi werden in dieser Reihenfolge angewendet (Texturkoordinaten + Offsets + Umbruchmodus), um Texturkoordinaten außerhalb des [0...1] Bereichs zu ändern.

Für Texturarrays gibt ein zusätzlicher Wert im Location-Parameter einen Index in ein Texturarray an. Dieser Index wird als skalierter Floatwert behandelt (anstelle des normalisierten Raums für Standardtexturkoordinaten). Die Konvertierung in einen ganzzahligen Index erfolgt in der folgenden Reihenfolge (float + round-to-nearest-even integer + clamp to the array range).

Anwenden von Texturkoordinatenoffsets

Der Offsetparameter ändert die Texturkoordinaten im texel-Raum. Obwohl Texturkoordinaten normalisierte Gleitkommazahlen sind, wendet der Offset einen ganzzahligen Offset an. Beachten Sie auch, dass die Texturoffsets statisch sein müssen.

Das zurückgegebene Datenformat wird durch das Texturformat bestimmt. Wenn die Texturressource beispielsweise mit dem DXGI_FORMAT_A8B8G8R8_UNORM_SRGB-Format definiert wurde, konvertiert der Samplingvorgang stichprobenierte Texel von Gamma 2,0 in 1,0, filtert und schreibt das Ergebnis als Gleitkommawert im Bereich [0.1].

Weitere Informationen

Beispielmethoden

Textur-Objekt