Compartilhar via


PFND3DDDI_SETCONVOLUTIONKERNELMONO função de retorno de chamada (d3dumddi.h)

A função SetConvolutionKernelMono define a resolução e os pesos do filtro de kernel, que é usado quando o modo de filtragem de textura D3DTEXF_CONVOLUTIONMONO é definido.

Sintaxe

PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;

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

Parâmetros

hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in]

Um ponteiro para uma estrutura de D3DDDIARG_SETCONVOLUTIONKERNELMONO que descreve parâmetros para definir o kernel de convolução monocromática.

Retornar valor

SetConvolutionKernelMono retorna um dos seguintes valores:

Código de retorno Descrição
S_OK O kernel de convolução monocromática é definido com êxito.
E_OUTOFMEMORY SetConvolutionKernelMono não pôde alocar a memória necessária para que ela fosse concluída.

Comentários

D3DTEXF_CONVOLUTIONMONO é um modo de filtro de textura usado para amostragem de texturas monocromáticas (ou seja, texturas formatadas como um bit por pixel (D3DDDIFMT_A1)). No runtime do Direct3D 9.L, o filtro de convolução é um filtro de caixa bidimensional (ou seja, todos os pesos = 1,0). No entanto, a função SetConvolutionKernelMono é definida para dar suporte a um filtro mais geral. Quando D3DTEXF_CONVOLUTIONMONO é definido como um amostrador de textura, o amostrador de textura declara D3DTSS_MIPFILTER, D3DTSS_MINFILTER e D3DTSS_MAGFILTER são ignorados. O endereço de textura D3DTADDRESS_BORDER com a cor da borda 0 deve ser aplicado nesse modo de filtragem. O driver de exibição do modo de usuário deve retornar um erro ou ignorar o primitivo renderizado se esse modo de filtragem for usado com uma textura não monocromática.

A seguinte fórmula é usada para executar a convolução:

Resultado = Soma(i=0, i <Nv)[ (Ri*(1 - alfa) + Ri+1*alfa) * S)]

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

S = 1 / (Nu * Nv)

Nu e Nv são a largura e a altura do kernel de filtro.

Ti,j são amostras de textura de uma textura monocromática no local (i, j).

A precisão das operações de filtro deve ser de pelo menos 6 bits.

Os valores de coordenada de textura interpolada (U, V) em um centro de pixels são as coordenadas do centro do kernel de filtro.

As coordenadas do exemplo de kernel do filtro superior esquerdo (Uf,Vf) são computadas como:

Uf = U * TextureWidth - Nu * 0,5

Vf = V * TextureHeight - Nv * 0,5

Então

beta = Uf - truncate(Uf)

alpha = Vf - truncado(Vf)

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho d3dumddi.h (inclua D3dumddi.h)

Confira também

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS