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