PFND3DDDI_SETCONVOLUTIONKERNELMONO回呼函式 (d3dumddi.h)
SetConvolutionKernelMono 函式會定義核心篩選的解析度和權數,此篩選條件會在設定紋理篩選模式D3DTEXF_CONVOLUTIONMONO時使用。
語法
PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;
HRESULT Pfnd3dddiSetconvolutionkernelmono(
HANDLE hDevice,
const D3DDDIARG_SETCONVOLUTIONKERNELMONO *unnamedParam2
)
{...}
參數
hDevice
顯示裝置的句柄 (圖形內容) 。
unnamedParam2
pData [in]
D3DDDIARG_SETCONVOLUTIONKERNELMONO 結構的指標,描述設定單色卷積核心的參數。
傳回值
SetConvolutionKernelMono 會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 已成功設定單色卷積核心。 |
E_OUTOFMEMORY | SetConvolutionKernelMono 無法為其配置所需的記憶體來完成。 |
備註
D3DTEXF_CONVOLUTIONMONO是一種紋理篩選模式,用於取樣單色紋理 (,也就是每個圖元格式化為一個位的紋理 (D3DDDIFMT_A1) ) 。 在 Direct3D 9.L 運行時間中,捲積篩選是二維方塊篩選 (也就是擁有權數 = 1.0) 。 不過, SetConvolutionKernelMono 函式的定義是支援更一般的篩選條件。 當D3DTEXF_CONVOLUTIONMONO設定為紋理取樣器時,會忽略紋理取樣器狀態D3DTSS_MIPFILTER、D3DTSS_MINFILTER和D3DTSS_MAGFILTER。 此篩選模式中應該套用具有框線色彩 0 的紋理位址D3DTADDRESS_BORDER。 如果使用者模式顯示驅動程式應該傳回錯誤,如果此篩選模式與非單色紋理搭配使用,則忽略轉譯的基本類型。
下列公式可用來執行卷積:
Result = Sum (i=0, i <Nv) [ (Ri* (1 - alpha) + Ri+1*alpha) * S) ]
Rk = Sum (j=0, j <Nu) [Tk,j* (1 - beta) + Tk,j+1*beta],其中 0 < k < Nv
S = 1 / (Nu * Nv)
Nu 和 Nv 是篩選核心的寬度和高度。
Ti,j 是位於 i、 j) (位置的單色紋理紋理樣本。
篩選作業的有效位數至少必須是6位。
在圖元中心 (U、V) 的插補紋理座標值是篩選核心中心座標。
左上方篩選核心範例 (Uf,Vf) 的座標會計算為:
Uf = U * TextureWidth - Nu * 0.5
Vf = V * TextureHeight - Nv * 0.5
結果為
beta = Uf - 截斷 U f (Uf)
alpha = Vf - 截斷 (Vf)
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
目標平台 | 桌面 |
標頭 | d3dumddi.h (include D3dumddi.h) |