Samplertyp

Verwenden Sie die folgende Syntax, um den Samplerzustand sowie den Samplervergleichszustand zu deklarieren.

Unterschiede zwischen Direct3D 9 und Direct3D 10 und höher:
Dies ist die Syntax für einen Sampler in Direct3D 9.
Samplername = SamplerType{ Texture = <texture_variable>; [state_name = state_value;] ... };

Die Syntax für einen Sampler in Direct3D 10 und höher wird geringfügig geändert, um Texturobjekte und Samplerarrays zu unterstützen.

SamplerType Name[Index]{ [state_name = state_value;] ... };

Parameter

Sampler

Nur Direct3D 9. Erforderliche Schlüsselwort (keyword).

Namen

ASCII-Zeichenfolge, die den Variablennamen des Samplers eindeutig identifiziert.

[Index]

Nur Direct3D 10 und höher. Optionale Arraygröße; eine positive ganze Zahl größer oder gleich 1.

SamplerType

[in] Der Samplertyp, der einer der folgenden ist: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.

Unterschiede zwischen Direct3D 9 und Direct3D 10 und höher:

  • Direct3D 10 und höher unterstützt einen zusätzlichen Samplertyp: SamplerComparisonState.

Textur = <texture_variable>;

Nur Direct3D 9. Eine Texturvariable. Die Textur Schlüsselwort (keyword) ist auf der linken Seite erforderlich. Der Variablenname gehört auf die rechte Seite des Ausdrucks innerhalb der spitzen Klammern.

state_name = state_value

[in] Optionale Zustandszuweisungen. Die linke Seite einer Zuweisung ist ein Zustandsname, die rechte Seite ist der Zustandswert. Alle Zustandszuweisungen müssen in einem Anweisungsblock (in geschweiften Klammern) angezeigt werden. Jede Anweisung wird durch ein Semikolon getrennt. In der folgenden Tabelle sind die möglichen Statusnamen aufgeführt.

// sampler state
AddressU
AddressV
AddressW
BorderColor
Filter
MaxAnisotropy
MaxLOD
MinLOD
MipLODBias

// sampler-comparison state
ComparisonFunc

Die rechte Seite jedes Ausdrucks ist der Wert, der jedem Zustand zugewiesen ist. Die möglichen Zustandswerte für Direct3D 11 finden Sie in der D3D11_SAMPLER_DESC-Struktur . Zwischen den Zustandsnamen und den Membern der -Struktur besteht eine Beziehung von 1 zu 1. Siehe folgendes Beispiel.

Bemerkungen

Wenn Sie einen Effekt implementieren, ist der Samplerzustand einer von mehreren Zustandstypen, die Sie möglicherweise in der Pipeline für das Rendering einrichten müssen. Eine Liste aller möglichen Zustände, die Sie in einem Effekt festlegen können, finden Sie unter:

Beispiel

Unterschiede zwischen Direct3D 9 und Direct3D 10:
Hier sehen Sie ein Teilbeispiel für einen Direct3D 9-Sampler aus BasicHLSL Sample.
sampler MeshTextureSampler = 
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

Hier sehen Sie ein Teilbeispiel für einen Direct3D 10-Sampler aus BasicHLSL10 Sample.

SamplerState MeshTextureSampler
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

Hier sehen Sie ein teilbeispiel für das Deklarieren des Samplervergleichszustands und das Aufrufen eines Vergleichsbeispiels in Direct3D 10.

SamplerComparisonState ShadowSampler
{
   // sampler state
   Filter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT;
   AddressU = MIRROR;
   AddressV = MIRROR;

   // sampler comparison state
   ComparisonFunc = LESS;
};
        
float3 vModProjUV;
  ...
float fShadow = g_ShadowMap.SampleCmpLevelZero( ShadowSampler, vModProjUV.xy, vModProjUV.z);

Siehe auch

Datentypen (DirectX HLSL)