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