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


Анизотропная фильтрация текстур (Direct3D 9)

Искажение, видимое в текселях трехмерного объекта, поверхность которого ориентирована под углом относительно плоскости экрана, называется анизотропией. Если пиксель из анизотропного примитива сопоставляется текселям, его форма искажается. Direct3D измеряет анизотропию пикселя как удлинение, то есть длину, разделенную на ширину, экранного пикселя, который сопоставляется в пространстве текстуры инверсивно.

Для улучшения результатов отрисовки анизотропную фильтрацию текстур можно использовать в сочетании с линейной фильтрацией текстур или MIP-фильтрацией текстур. Приложение включает анизотропную фильтрацию текстур путем вызова метода IDirect3DDevice9::SetSamplerState . Задайте для первого параметра целочисленный номер индекса (0–7) текстуры, для которой выбирается метод фильтрации текстур. Передайте D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER или D3DSAMP_MIPFILTER для второго параметра, чтобы задать фильтр увеличения, минификации или mipmapping. Присвойте третьему параметру значение D3DTEXF_ANISOTROPIC.

Приложение также должно задать для степени анизотропии значение больше единицы. Для этого вызовите метод IDirect3DDevice9::SetSamplerState . Задайте для первого параметра целочисленное число индекса (0–7) текстуры, для которой устанавливается степень изотропии. Передайте D3DSAMP_MAXANISOTROPY в качестве значения второго параметра. Окончательным параметром должна быть степень изотропии.

Вы можете отключить изотропную фильтрацию, задав степень изотропии в значение 1; любое значение, превышающее единицы, включает его. Проверьте флаг MaxAnisotropy в структуре D3DCAPS9 , чтобы определить возможный диапазон значений для степени анизотропии.

Фильтрация текстур