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) |