取樣器(Direct3D 9 asm-ps)
取樣器是圖元著色器的輸入虛擬緩存器,用來識別取樣階段。 有16個像素著色器取樣階段寄存器:s0 到 s15。 因此,最多可以在單一著色器傳遞中讀取 16 個紋理表面。 使用取樣器暫存器的指令為 texld 和 texldp。
取樣器必須先宣告,才能搭配 dcl_samplerType (sm2, sm3 - ps asm) 指示使用。
像素著色器版本 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
取樣器 | x | x | x | x | x |
取樣器是虛擬緩存器,因為您無法直接讀取或寫入它們。
取樣單位對應至紋理取樣階段,封裝由 SetSamplerState提供的特定取樣狀態。 每個取樣器都會唯一識別單一紋理表面,這會使用 SetTexture設定為相應的取樣器。 不過,相同的紋理表面可以在多個取樣器上設定。
在繪製過程中,紋理無法同時被設置為渲染目標和某個階段的紋理。
取樣器可能會顯示為紋理載入指令中唯一的自變數:texldl - ps。
在ps_3_0中,如果使用取樣器,則必須使用 dcl_samplerType (sm2, sm3 - ps asm) 指令,在著色器程式開頭宣告它。
取樣維度高於紋理座標的紋理是非法的。 ** 取樣低於紋理座標維度的紋理時,將會忽略多出的紋理座標。
相關主題