过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较

时间:2024-04-06 19:33:44

 

设置纹理采样模式主要是通过SetSamplerState函数来实现,这个函数有三个参数,第一个参数代表着定点中的不同采样单元,(顶点着色器中的对多个纹理单元的使用,一般demo只用一个纹理,所以这个参数一般默认为0);

第二个参数是D3DSAMPLERSTATETYPE枚举值中的一个,一般用到的有三个枚举值

D3DSAMP_MAGFILTER      = 5,

D3DSAMP_MINFILTER      = 6,

D3DSAMP_MIPFILTER      = 7,

分别是放大,缩小,多级过滤纹理采样。

 

第二个纹理过滤是用来给第三个做铺垫的。因为多级纹理过滤就是按照原来纹理的尺寸,不断生成比原来小的尺寸纹理,如何生成呢,就看给D3DSAMP_MINFILTER    设置成什么值了。

过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较
标缩小放大和多级纹理均采用最近点采样D3DTEXF_POINT,可以明显看到毛刺
过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较
缩小放大采用线性过滤,多级纹理也采用线性过滤,这样就是三线性过滤

为了和各向异性过滤对比,我把三角形的倾斜角度加大了一点

注意,多级纹理过滤中没有定义各向异性过滤,所以只能在放大和缩小过滤中

过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较
设置了各向异性过滤,好像没有很明显的变化,可能是角度还不够。。。

 

 

过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较

左边:各向异性过滤 (增大角度之后)  右边 三线性过滤  (好像看不出来什么效果。。。)