функция обратного вызова 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) |