функция обратного вызова 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 определена для поддержки более общего фильтра. Если для 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 (включая D3dumddi.h)

См. также раздел

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS