各向异性过滤开不开 各向异性过滤

导读 今天来聊聊关于各向异性过滤开不开,各向异性过滤的文章,现在就为大家来简单介绍下各向异性过滤开不开,各向异性过滤,希望对各位小伙伴们

今天来聊聊关于各向异性过滤开不开,各向异性过滤的文章,现在就为大家来简单介绍下各向异性过滤开不开,各向异性过滤,希望对各位小伙伴们有所帮助。

1、Bilinear Interpolation (双线过滤) 这是一种较好的材质影像插补的处理方式,会先找出最接近像素的四个图素,然后在它们之间作差补效果,最后产生的结果才会被贴到像素的位置上,这样不会看到“马赛克”现象。

2、这种处理方式较适用于有一定景深的静态影像,不过无法提供最佳品质。

3、其最大问题在于,当三维物体变得非常小时,一种被称为Depth Aliasing artifacts(深度赝样锯齿),也不适用于移动中的物件。

4、 Trilinear Interpolation (三线过滤) 这是一种更复杂材质影像插补处理方式,会用到相当多的材质影像,而每张的大小恰好会是另一张的四分之一。

5、例如有一张材质影像是512×512个图素,第二张就会是256×256个图素,第三张就会是128×128个图素等等,总之最小的一张是1×1.凭借这些多重解析度的材质影像,当遇到景深极大的场景时(如飞行模拟),就能提供高品质的贴图效果。

6、一个“双线过滤”需要三次混合,而“三线过滤”就得作七次混合处理,所以每个像素就需要多用21/3倍以上的计算时间。

7、还需要两倍大的存储器时钟带宽。

8、但是“三线过滤”可以提供最高的贴图品质,会去除材质的“闪烁”效果。

9、对于需要动态物体或景深很大的场景应用方面而言,只有“三线过滤”才能提供可接受的材质品质。

10、 Anisotropic Interpolation (各向异性过滤) 它在取样时候,会取8个甚至更多的像素来加以处理,所得到的质量最好。

11、----------------------------------- 在 OpenGL 里我尝试使用 三线过滤 ,出来的画面平滑感觉比 各向异性过滤的还要好点。

12、哈,我就觉得三线过滤效果比各向异性过滤效果好点。

13、在国内的网站上很少关于 OpenGL 使用这三线过滤和各向异性过滤的文章,有的都是理论,没有代码,我看了一个国外的代码。

14、其实就是在加载纹理的时候把代码改为: // <<<三线过滤>>> //设置纹理缩小时采用的过滤方法,这里设置的是三线性过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); //设置纹理放大时采用的过滤方法,这里设置的是线性过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //用OpenGL实现支持的最大各异向程度设置最大各异向程度参数 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f); // <<<各向异性过滤>>> //设置纹理缩小时采用的过滤方法,这里设置的是三线性过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); //设置纹理放大时采用的过滤方法,这里设置的是线性过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //用OpenGL实现支持的最大各异向程度设置最大各异向程度参数 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, xxx); // 注意:这里的 xxx 代表 各向异性过滤 的异向程度参数 // 你可以设置为:4 , 8 , 16 等。

15、这里也可以在 InitGL() 驱动 OpenGL 函数里写上 int LrgSupAni; glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &LrgSupAni); 那么 xxx 就得小于或等于 LrgSupAni。

相信通过各向异性过滤这篇文章能帮到你,在和好朋友分享的时候,也欢迎感兴趣小伙伴们一起来探讨。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!