为什么放大时WebGL的EXT_texture_filter_anisotropic力线性插值

问题描述

我现在很困惑,我在将minecraft Java移植到WebGL感到很困惑,当我在地形纹理上将纹理参数TEXTURE_MAX_ANISOTROPY设置为大于1.0的任何值时,它立即切换为使用线性放大滤镜,即使在绑定纹理时在下一行中将TEXTURE_MAG_FILTER显式设置为NEAREST。图1显示TEXTURE_MAX_ANISOTROPY设置为1.0时的采样,图2显示TEXTURE_MAX_ANISOTROPY设置为大于1.0的任何值时的采样

opengl nearest magnification filter

opengl linear magnification filter

当然,当纹理被放大时,我可能会浪费时间进行glsl修改以环绕UV以模拟NEAREST过滤,但这是一种廉价的修改,肯定会损害性能和严重的OCD

那么有人可以向我解释为什么webgl会这样吗?对于这个项目,必须进行精确的各向异性过滤

gl.bindTexture(gl.TEXTURE_2D,terrainTexture);
gl.texParameterf(gl.TEXTURE_2D,ext.TEXTURE_MAX_ANISOTROPY_EXT,16.0);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST_MIPMAP_NEAREST);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);

不,在最初的gl.texParameteri(gl.TEXTURE_2D,xxxxxx);调用之后渲染地形时,程序中没有一行调用NEAREST,这是不可能的,我仍然检查了很多次发表这篇文章

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)