Compartir a través de


PFND3DDDI_SETCONVOLUTIONKERNELMONO función de devolución de llamada (d3dumddi.h)

La función SetConvoluciónKernelMono define la resolución y los pesos del filtro de kernel, que se usa cuando se establece el modo de filtrado de texturas D3DTEXF_CONVOLUTIONMONO.

Sintaxis

PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;

HRESULT Pfnd3dddiSetconvolutionkernelmono(
  HANDLE hDevice,
  const D3DDDIARG_SETCONVOLUTIONKERNELMONO *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in]

Puntero a una estructura de D3DDDIARG_SETCONVOLUTIONKERNELMONO que describe los parámetros para establecer el kernel de convolución monocromática.

Valor devuelto

setConvoluciónKernelMono devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK El kernel de convolución monocromo se ha establecido correctamente.
E_OUTOFMEMORY SetConvoluciónKernelMono no pudo asignar la memoria necesaria para que se complete.

Observaciones

D3DTEXF_CONVOLUTIONMONO es un modo de filtro de textura que se usa para muestreo de texturas monocromáticas (es decir, texturas con formato de un bit por píxel (D3DDDIFMT_A1)). En el tiempo de ejecución de Direct3D 9.L, el filtro de convolución es un filtro de cuadro bidimensional (es decir, todos los pesos = 1,0). Sin embargo, la función SetConvoluciónKernelMono se define para admitir un filtro más general. Cuando D3DTEXF_CONVOLUTIONMONO se establece en un muestreador de textura, se omiten los estados del muestreador de textura D3DTSS_MIPFILTER, D3DTSS_MINFILTER y D3DTSS_MAGFILTER. La dirección de textura D3DTADDRESS_BORDER con color de borde 0 debe aplicarse en este modo de filtrado. El controlador de pantalla en modo de usuario debe devolver un error o omitir el primitivo representado si se usa este modo de filtrado con una textura no monocromática.

La fórmula siguiente se usa para realizar la convolución:

Result = Sum(i=0, i <Nv)[ (Ri*(1 - alpha) + Ri+1*alpha) * S)]

Rk = Sum(j=0, j <Nu)[Tk,j*(1 - beta) + Tk,j+1*beta], donde 0 < k < Nv

S = 1 / (Nu * Nv)

Nu y Nv son el ancho y alto del kernel de filtro.

Ti,j son muestras de textura de una textura monocromática en la ubicación (i, j).

La precisión de las operaciones de filtro debe ser de al menos 6 bits.

Los valores de coordenadas de textura interpolada (U, V) en un centro de píxeles son las coordenadas del centro del kernel de filtro.

Las coordenadas del ejemplo de kernel de filtro superior izquierdo (Uf,Vf) se calculan como:

Uf = U * TextureWidth - Nu * 0,5

Vf = V * TextureHeight - Nv * 0,5

Entonces

beta = Uf - truncate(Uf)

alpha = Vf - truncate(Vf)

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
de la plataforma de destino de Escritorio
encabezado de d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS