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 kernel, que se usa cuando se establece el modo de filtrado de texturas de 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 D3DDDIARG_SETCONVOLUTIONKERNELMONO que describe los parámetros para establecer el kernel de convolución monocromo.

Valor devuelto

SetConvoluciónKernelMono devuelve uno de los siguientes valores:

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

Comentarios

D3DTEXF_CONVOLUTIONMONO es un modo de filtro de textura que se usa para el 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 sampler de textura, el muestreador de texturas indica D3DTSS_MIPFILTER, D3DTSS_MINFILTER y D3DTSS_MAGFILTER se omiten. 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 interpoladas (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 Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS