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)

Voir aussi

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS