PFND3DDDI_SETCONVOLUTIONKERNELMONO fonction de rappel (d3dumddi.h)
La fonction SetConvolutionKernelMono définit la résolution et les poids du filtre de noyau, qui est utilisé lorsque le mode de filtrage de texture D3DTEXF_CONVOLUTIONMONO est défini.
Syntaxe
PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;
HRESULT Pfnd3dddiSetconvolutionkernelmono(
HANDLE hDevice,
const D3DDDIARG_SETCONVOLUTIONKERNELMONO *unnamedParam2
)
{...}
Paramètres
hDevice
Handle pour le périphérique d’affichage (contexte graphique).
unnamedParam2
pData [in]
Pointeur vers une structure D3DDDIARG_SETCONVOLUTIONKERNELMONO qui décrit les paramètres de définition du noyau de convolution monochrome.
Valeur retournée
SetConvolutionKernelMono retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
S_OK | Le noyau de convolution monochrome est correctement défini. |
E_OUTOFMEMORY | SetConvolutionKernelMono n’a pas pu allouer la mémoire nécessaire pour qu’il se termine. |
Remarques
D3DTEXF_CONVOLUTIONMONO est un mode de filtre de texture utilisé pour l’échantillonnage des textures monochromes (c’est-à-dire des textures au format d’un bit par pixel (D3DDDIFMT_A1)). Dans le runtime Direct3D 9.L, le filtre de convolution est un filtre de boîte à deux dimensions (autrement dit, toutes les pondérations = 1.0). Toutefois, la fonction SetConvolutionKernelMono est définie pour prendre en charge un filtre plus général. Lorsque D3DTEXF_CONVOLUTIONMONO est défini sur un échantillonneur de texture, l’échantillonneur de texture états D3DTSS_MIPFILTER, D3DTSS_MINFILTER et D3DTSS_MAGFILTER sont ignorés. L’adresse de texture D3DTADDRESS_BORDER avec la couleur de bordure 0 doit être appliquée dans ce mode de filtrage. Le pilote d’affichage en mode utilisateur doit retourner une erreur ou ignorer la primitive rendue si ce mode de filtrage est utilisé avec une texture non monochrome.
La formule suivante est utilisée pour effectuer la convolution :
Résultat = Sum(i=0, i <Nv)[ (Ri*(1 - alpha) + Ri+1*alpha) * S)]
Rk = Sum(j=0, j <Nu)[Tk,j*(1 - bêta) + Tk,j+1*beta], où 0 < k < Nv
S = 1 / (Nu * Nv)
Nu et Nv sont la largeur et la hauteur du noyau de filtre.
Ti,j sont des échantillons de texture d’une texture monochrome à l’emplacement (i, j).
La précision des opérations de filtre doit être d’au moins 6 bits.
Les valeurs de coordonnées de texture interpolées (U, V) au centre d’un pixel sont les coordonnées du centre du noyau de filtre.
Les coordonnées de l’exemple de noyau de filtre supérieur gauche (Uf,Vf) sont calculées comme suit :
Uf = U * TextureWidth - Nu * 0,5
Vf = V * TextureHeight - Nv * 0,5
Alors
beta = Uf - truncate(Uf)
alpha = Vf - tronquer(Vf)
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dumddi.h (inclure D3dumddi.h) |