Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда Direct3D отрисовывает примитив, он сопоставляет трехмерный примитив на 2D-экране. Если примитив имеет текстуру, Direct3D должен использовать такую текстуру для создания цвета для каждого пикселя в 2D-изображении отрисованного примитива. Для каждого пикселя в изображении на экране примитива он должен получить значение цвета из текстуры. Этот процесс называется фильтрацией текстур.
Когда выполняется операция фильтрации текстур, используемая текстура обычно также увеличивается или уменьшается. Другими словами, он преобразуется в простое изображение, которое больше или меньше его самого. Увеличение текстуры может привести к сопоставлению многих пикселей с одним тексельом. Результатом может быть массивный облик. Минификация текстуры часто означает, что один пиксель сопоставляется со многими текселями. Полученное изображение может быть размытым или ступенчатым. Чтобы устранить эти проблемы, необходимо выполнить некоторые смешения цветов текселя, чтобы получить цвет для пикселя.
Direct3D упрощает сложный процесс фильтрации текстур. Он предоставляет три типа фильтрации текстур : линейную фильтрацию, анизотропную фильтрацию и фильтрацию MIP-карты. Если вы не выберете фильтрацию текстур, Direct3D использует метод, называемый выборкой ближайшей точки.
Каждый тип фильтрации текстур имеет преимущества и недостатки. Например, линейная фильтрация текстур может создавать зазубренные края или грубый внешний вид в окончательном изображении. Однако это вычислительный метод фильтрации текстур с низкой нагрузкой. Фильтрация с помощью MIP-карт обычно дает наилучшие результаты, особенно при сочетании с анисотропной фильтрацией. Однако это требует больше памяти, чем любые другие методы, поддерживаемые Direct3D.
Приложения, использующие указатели интерфейса текстуры, должны задать текущий метод фильтрации текстур, вызвав метод IDirect3Device9::SetSamplerState. Задайте для первого параметра целочисленное число индекса (0-7) текстуры, для которой выбирается метод фильтрации текстур. Передайте D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER или D3DSAMP_MIPFILTER для второго параметра, чтобы задать фильтр повышения разрешения, уменьшения или мипмаппинга. В качестве значения в третьем параметре передайте элемент перечисленного типа D3DTEXTUREFILTERTYPE.
В этом разделе представлены методы фильтрации текстур, поддерживаемые Direct3D. Она организована по следующим темам.
- Nearest-Point семплирование (Direct3D 9)
- линейная фильтрация текстур (Direct3D 9)
- двухлинейная фильтрация текстур (Direct3D 9)
- анизотропная фильтрация текстур (Direct3D 9)
- фильтрация текстур с помощью Mipmaps (Direct3D 9)
Заметка
Хотя состояния фильтрации текстур, присутствующие в перечисляемом типе D3DRENDERSTATETYPE, заменяются состояниями стадий текстур, функция IDirect3DDevice9::SetRenderState, в отличие от версии IDirect3DDevice2, не завершится ошибкой, если вы попытаетесь их использовать. Скорее система сопоставляет эффекты этих состояний отрисовки с первым этапом многослойного каскада, этапом 0. Приложения не должны смешивать устаревшие состояния отрисовки с соответствующими состояниями стадии текстуры, так как непредсказуемые результаты могут возникать.
Связанные разделы