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.

Valor de retorno

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.

Observações

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, os estados de amostragem de textura 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 fórmula a seguir é usada para executar a convolução:

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

Rk = Sum(j=0, j <Nu)[Tk,j*(1 - beta) + Tk,j+1*beta], onde 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 pixel 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 - truncado(Uf)

alpha = Vf - truncado(Vf)

Requisitos

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

Consulte também

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS