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) |