Freigeben über


PFND3DDDI_SETCONVOLUTIONKERNELMONO Rückruffunktion (d3dumddi.h)

Die SetConvolutionKernelMono--Funktion definiert die Auflösung und Gewichtung des Kernelfilters, die beim Festlegen des D3DTEXF_CONVOLUTIONMONO Texturfiltermodus verwendet wird.

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 Monochromkonvolution-Kernels beschreibt.

Rückgabewert

SetConvolutionKernelMono gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK Der monochrome Konvolution-Kernel wurde erfolgreich festgelegt.
E_OUTOFMEMORY SetConvolutionKernelMono konnte den erforderlichen Arbeitsspeicher nicht zuordnen, damit er abgeschlossen werden kann.

Bemerkungen

D3DTEXF_CONVOLUTIONMONO ist ein Texturfiltermodus, der zum Sampling monochromer Texturen verwendet wird (d. r. Texturen, die als ein Bit pro Pixel (D3DDDIFMT_A1)formatiert sind). In der Direct3D 9.L-Laufzeit ist der Konvolutionfilter ein zweidimensionaler Boxfilter (d. h. alle Gewichte = 1,0). Die SetConvolutionKernelMono--Funktion wird jedoch definiert, um einen allgemeineren Filter zu unterstützen. Wenn D3DTEXF_CONVOLUTIONMONO auf einen Textur-Sampler festgelegt ist, werden die Textur-Samplerzustä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 Filterkerns.

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

Die Genauigkeit der Filtervorgänge muss mindestens 6 Bit groß sein.

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

Die Koordinaten des Beispiels für den oberen linken Filterkernkern (Uf,Vf) werden wie folgt berechnet:

Uf = U * TextureWidth - Nu * 0,5

Vf = V * TextureHeight - Nv * 0,5

Dann

beta = Uf - abgeschnitten(Uf)

alpha = Vf - abgeschnitten(Vf)

Anforderungen

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

Siehe auch

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS