各向异性纹理过滤

各向异性纹理过滤
Microsoft® Direct3D®在渲染图元时,要把三维图元映射到二维屏幕上。如果图元贴有纹理,那么Direct3D必须用该纹理给图元在二维屏幕上对应的每个像素产生一个颜色。对于每个像素,Direct3D必须从纹理获得一个颜色值,这个过程被称为纹理过滤。在执行纹理过滤操作时,正在使用的纹理一般会被放大或缩小,换句话说,就是纹理被贴到比它大或比它小的图元上。纹理放大会使多个像素映射到一个texel,得到的图像可能会有马赛克。纹理缩小会使一个像素映射到多个texel,得到的图像可能会模糊不清或有锯齿。要解决这些问题,必须在计算像素的颜色时对texel的颜色进行一些混合操作。

概述

Direct3D把复杂的纹理过滤过程简化了,它给应用程序提供了三种类型的纹理过滤——线性过滤、各向异性过滤和mipmap过滤。如果应用程序不选择以上三种纹理过滤,那么Direct3D使用一种被称为最近点取样的技术,因为三维物体表面与屏幕间的夹角而造成的纹理扭曲被称为各向异性。当把一个各向异性的图元所对应的像素映射到texel时,像素的形状会被扭曲。Microsoft® Direct3D®根据像素被反向映射到纹理空间中的伸长率——也就是长度除以宽度——计量屏幕上像素的各向异性属性。
为了提高渲染质量,应用程序可以把各向异性过滤与线性纹理过滤或Mipmap纹理过滤结合在一起使用。应用程序可以调用IDirect3DDevice9::SetSamplerState方法启用各向异性纹理过滤,只需把第三个参数设为D3DTEXF_ANISOTROPIC即可。

设置方法