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.
Die Syntax für einen Sampler in Direct3D 10 und höher wird geringfügig geändert, um Texturobjekte und Samplerarrays zu unterstützen.
|
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:
- Direct3D 10 verwendet Zustandsgruppen.
- Direct3D 9 verwendet einzelne Zustände.
Beispiel
Unterschiede zwischen Direct3D 9 und Direct3D 10: Hier sehen Sie ein Teilbeispiel für einen Direct3D 9-Sampler aus BasicHLSL Sample.
Hier sehen Sie ein Teilbeispiel für einen Direct3D 10-Sampler aus BasicHLSL10 Sample.
|
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);