PFND3DDDI_SETCONVOLUTIONKERNELMONO Rückruffunktion (d3dumddi.h)

Die SetConvolutionKernelMono-Funktion definiert die Auflösung und Gewichtung des Kernelfilters, der verwendet wird, wenn der D3DTEXF_CONVOLUTIONMONO Texturfiltermodus festgelegt ist.

Syntax

PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;

HRESULT Pfnd3dddiSetconvolutionkernelmono(
  HANDLE hDevice,
  const D3DDDIARG_SETCONVOLUTIONKERNELMONO *unnamedParam2
)
{...}

Parameter

hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

pData [in]

Ein Zeiger auf eine D3DDDIARG_SETCONVOLUTIONKERNELMONO-Struktur , die Parameter zum Festlegen des monochromen Konvolutionskernels beschreibt.

Rückgabewert

SetConvolutionKernelMono gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der monochrome Konvolutionskern wurde erfolgreich festgelegt.
E_OUTOFMEMORY SetConvolutionKernelMono konnte nicht den erforderlichen Arbeitsspeicher zuordnen, um ihn abzuschließen.

Hinweise

D3DTEXF_CONVOLUTIONMONO ist ein Texturfiltermodus, der zum Sampling monochromer Texturen verwendet wird (d. h. Texturen, die als ein Bit pro Pixel (D3DDDIFMT_A1) formatiert sind). In der Direct3D 9.L-Runtime ist der Faltungsfilter ein zweidimensionaler Boxfilter (d. h. alle Gewichtungen = 1,0). Die SetConvolutionKernelMono-Funktion ist jedoch so definiert, dass sie einen allgemeineren Filter unterstützt. Wenn D3DTEXF_CONVOLUTIONMONO auf einen Textur-Sampler festgelegt ist, werden die Textur-Sampler-Zustände D3DTSS_MIPFILTER, D3DTSS_MINFILTER und D3DTSS_MAGFILTER ignoriert. Die Texturadresse D3DTADDRESS_BORDER mit Rahmenfarbe 0 sollte in diesem Filtermodus angewendet werden. Der Anzeigetreiber für den Benutzermodus sollte einen Fehler zurückgeben oder den gerenderten Grundtyp ignorieren, wenn dieser Filtermodus mit einer nicht monochromen Textur verwendet wird.

Die folgende Formel wird verwendet, um die Konvolution auszuführen:

Ergebnis = Summe(i=0, i <Nv)[ (Ri*(1 - alpha) + Ri+1*alpha) * S)]

Rk = Summe(j=0, j <Nu)[Tk,j*(1 - beta) + Tk,j+1*beta], wobei 0 < k < Nv

S = 1 / (Nu * Nv)

Nu und Nv sind die Breite und Höhe des Filterkernels.

Ti,j sind Texturproben aus einer monochromen Textur an der Position (i, j).

Die Genauigkeit der Filtervorgänge muss mindestens 6 Bits sein.

Die interpolierten Texturkoordinatenwerte (U, V) in einem Pixelmittelpunkt sind die Koordinaten der Mitte des Filterkerns.

Die Koordinaten des oberen linken Filterkernbeispiels (Uf,Vf) werden wie folgt berechnet:

Uf = U * TextureWidth - Nu * 0,5

Vf = V * TextureHeight - Nv * 0,5

Then

beta = Uf - truncate(Uf)

alpha = Vf - truncate(Vf)

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile d3dumddi.h (include D3dumddi.h)

Weitere Informationen

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS