SampleCmp (DirectX HLSL Texture 物件)

取樣紋理,並將單一元件與指定的比較值進行比較。

float Object.SampleCmp (
SamplerComparisonState S,
float Location,
float CompareValue,
[int Offset]
);
 

比較是儲存在紋理中的第一個元件與傳遞至 方法的比較值之間的單一元件比較。

這個方法只能從圖元著色器叫用;頂點或幾何著色器不支援。

參數

物件

除了 Texture2DMS、Texture2DMSArray 或 Texture3D) 以外,任何 紋理物件 類型 (。

S

[in]取樣器比較狀態,這是取樣器狀態,加上比較狀態, (比較函式和比較篩選準則) 。 如需詳細資料和範例,請參閱 取樣器類型

位置

[in]紋理座標。 引數類型相依于 texture-object 類型。

Texture-Object類型 參數類型
Texture1D FLOAT
Texture1DArray、 Texture2D float2
Texture2DArray¹, TextureCube float3
TextureCubeArray¹ float4

CompareValue

做為比較值的浮點值。

抵消

[in]選擇性紋理座標位移,可用於任何紋理物件類型;位移會套用至取樣之前的位置。 紋理位移必須是靜態的。 引數類型相依于 texture-object 類型。 如需詳細資訊,請參閱 套用紋理座標位移

Texture-Object類型 參數類型
Texture1D、Texture1DArray int
Texture2D、Texture2DArray¹ int2
TextureCube、TextureCubeArray¹ 不支援

傳回值

傳回範圍 [0..1] 中的浮點值。

針對根據篩選模式) 取樣器組態擷取的每個材質 (, SampleCmp 會在比較通過時,針對著色器與紋素 (值 (1,從著色器對輸入) 的第 3 個元件執行 z 值比較;否則為 0) 。 SampleCmp 接著會將每個材質的 0 和 1 結果混合在一起,如同一般紋理篩選 (不是平均) ,並將產生的 [0..1] 值傳回著色器。

備註

比較篩選提供基本篩選作業,適用于更接近百分比的深度篩選。

在浮點資源上使用這個方法 (而不是) 帶正負號的正規化或未帶正負號的格式時,比較值不會在 0.0 到 1.0 之間自動限制。 因此,常見的陰影技術可能需要手動限制比較值。

只在整數位移處使用位移;否則,根據硬體實作或驅動程式設定,您可能會得到不同的結果。

最小著色器模型

下列著色器模型支援此函式。

vs_4_0 vs_4_1 Vs_4_1 ps_4_0 ps_4_1 ー gs_4_0 gs_4_1 Gs_4_1
x
  1. Texture2DArray 和 TextureCubeArray 可在著色器模型 4.1 或更高版本中使用。
  2. 著色器模型 4.1 可在 Direct3D 10.1 或更高版本中使用。

注意

當您使用實作 Direct3D 功能層級 9中說明的技術時,ps 4_0_level_9_1 和 4_0_level_9_3也提供SampleCmp

Texture-Object