次の方法で共有


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は、モノクロ テクスチャ (つまり、ピクセルあたり 1 ビット (D3DDDIFMT_A1) として書式設定されたテクスチャ) のサンプリングに使用されるテクスチャ フィルター モードです。 Direct3D 9.L ランタイムでは、畳み込みフィルターは 2 次元ボックス フィルター (つまり、すべての重み = 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], where 0 < k < Nv

S = 1 / (Nu * Nv)

Nu と Nv は、フィルター カーネルの幅と高さです。

Ti,j は、場所 (i、 j) のモノクロ テクスチャからのテクスチャ サンプルです。

フィルター操作の精度は、少なくとも 6 ビットである必要があります。

ピクセル中心での補間テクスチャ座標値 (U、V) は、フィルター カーネルの中心の座標です。

左上フィルター カーネル サンプル (Uf,Vf) の座標は、次のように計算されます。

Uf = U * TextureWidth - Nu * 0.5

V f = V * TextureHeight - Nv * 0.5

THEN

beta = Uf - truncate(Uf)

alpha = Vf - truncate(Vf)

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS