PFND3DDDI_SETCONVOLUTIONKERNELMONO funzione di callback (d3dumddi.h)

La funzione SetConvolutionKernelMono definisce la risoluzione e i pesi del filtro kernel, che viene usato quando viene impostata la modalità di filtro delle trame D3DTEXF_CONVOLUTIONMONO.

Sintassi

PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;

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

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in]

Puntatore a una struttura D3DDDIARG_SETCONVOLUTIONKERNELMONO che descrive i parametri per l'impostazione del kernel di convoluzione monocromatica.

Valore restituito

SetConvolutionKernelMono restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK Il kernel di convoluzione monocromatico viene impostato correttamente.
E_OUTOFMEMORY SetConvolutionKernelMono non è riuscito ad allocare la memoria necessaria per il completamento.

Commenti

D3DTEXF_CONVOLUTIONMONO è una modalità di filtro trama usata per il campionamento di trame monocromatiche,ovvero trame formattate come un bit per pixel (D3DDDIFMT_A1)). Nel runtime Direct3D 9.L, il filtro di convoluzione è un filtro casella bidimensionale, ovvero tutti i pesi = 1,0. Tuttavia, la funzione SetConvolutionKernelMono è definita per supportare un filtro più generale. Quando D3DTEXF_CONVOLUTIONMONO è impostato su un campionatore di trama, gli stati del campionatore di trama D3DTSS_MIPFILTER, D3DTSS_MINFILTER e D3DTSS_MAGFILTER vengono ignorati. L'indirizzo della trama D3DTADDRESS_BORDER con colore bordo 0 deve essere applicato in questa modalità di filtro. Il driver di visualizzazione in modalità utente deve restituire un errore o ignorare la primitiva sottoposta a rendering se questa modalità di filtro viene usata con una trama non monocromatica.

Per eseguire la convoluzione viene usata la formula seguente:

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], dove 0 < k < Nv

S = 1 / (Nu * Nv)

Nu e Nv sono la larghezza e l'altezza del kernel di filtro.

T,j sono campioni di trama da una trama monocromatica nella posizione (i, j).

La precisione delle operazioni di filtro deve essere di almeno 6 bit.

I valori delle coordinate delle trame interpolate (U, V) in un centro pixel sono le coordinate del centro del kernel di filtro.

Le coordinate dell'esempio del kernel del filtro superiore sinistro (Uf,Vf) vengono calcolate come segue:

Uf = U * TextureWidth - Nu * 0.5

Vf = V * TextureHeight - Nv * 0.5

Risultato

beta = Uf - truncate(Uf)

alpha = Vf - truncate(Vf)

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione d3dumddi.h (include D3dumddi.h)

Vedi anche

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS