Поделиться через


функция обратного вызова PFND3DDDI_SETCONVOLUTIONKERNELMONO (d3dumddi.h)

Функция SetConvolutionKernelMono определяет разрешение и вес фильтра ядра, которое используется при установке режима фильтрации текстур D3DTEXF_CONVOLUTIONMONO.

Синтаксис

PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;

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

Параметры

hDevice

Дескриптор устройства отображения (графический контекст).

unnamedParam2

pData [in]

Указатель на структуру D3DDDIARG_SETCONVOLUTIONKERNELMONO, описывающую параметры настройки ядра монохромной свертки.

Возвращаемое значение

SetConvolutionKernelMono возвращает одно из следующих значений:

Возвращаемый код Описание
S_OK Ядро сверточной свертки монохрома успешно установлено.
E_OUTOFMEMORY SetConvolutionKernelMono не удалось выделить необходимую память для его завершения.

Замечания

D3DTEXF_CONVOLUTIONMONO — это режим фильтрации текстур, используемый для выборки монохромных текстур (то есть текстуры, отформатированные по одному биту на пиксель (D3DDDIFMT_A1)). В среде выполнения Direct3D 9.L фильтр сверток является двухмерным фильтром коробки (то есть все весы = 1,0). Однако функция setConvolutionKernelMono setConvolutionKernelMono определена для поддержки более общего фильтра. Если D3DTEXF_CONVOLUTIONMONO задано в образец текстур, состояние D3DTSS_MIPFILTER текстуры D3DTSS_MINFILTER и D3DTSS_MAGFILTER игнорируются. Адрес текстуры D3DTADDRESS_BORDER с цветом границы 0 должен применяться в этом режиме фильтрации. Драйвер отображения в пользовательском режиме должен возвращать ошибку или игнорировать отрисованный примитив, если этот режим фильтрации используется с текстурой, отличной от монохромной.

Следующая формула используется для выполнения свертки:

Result = Sum(i=0, i <Nv)[ (Ri*(1 - альфа) + Ri+1*alpha) * S)]

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

S = 1 / (Nu * Nv)

Nu и Nv — это ширина и высота ядра фильтра.

Ti,j являются образцами текстуры из монохромной текстуры в расположении (i, j).

Точность операций фильтра должна быть не менее 6 битов.

Интерполированные значения координат текстуры (U, V) в центре пикселей — это координаты центра ядра фильтра.

Координаты примера ядра ядра фильтра в верхнем левом углу (Uf,Vf) вычисляются следующим образом:

Uf = U * TextureWidth - Nu * 0,5

Vf = V * TextureHeight - Nv * 0,5

Тогда

beta = Uf - усечение (Uf)

alpha = Vf - усечение(Vf)

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Vista и более поздних версиях операционных систем Windows.
целевая платформа Настольный
заголовка d3dumddi.h (include D3dumddi.h)

См. также

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS