opengl纹理lod偏差调整通过opengl函数调用?

3 opengl texture-mapping

如何通过opengl函数调用来改变lod偏差?我不喜欢默认设置,过早更改miplevels并使附近的地面看起来很难看.

我无法找到任何代码来执行此操作,每个主题都是关于一些执行此任务的外部程序...

编辑:这是我的纹理设置:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
Run Code Online (Sandbox Code Playgroud)

Str*_*ger 10

使用:

glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, bias);
Run Code Online (Sandbox Code Playgroud)

更多详细信息:http: //www.opengl.org/sdk/docs/man/xhtml/glTexEnv.xml ,其中:http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_lod_bias.文本

编辑:

好的我明白了.首先GL_TEXTURE_MAG_FILTER只能采取两个可能的值:

  • GL_NEAREST
  • 要么 GL_LINEAR

所以要用GL_LINEAR到最好的结果.

然后GL_TEXTURE_MIN_FILTER,对于GL_NEAREST_MIPMAP_NEAREST你没有使用纹理插值,只使用mipmaping(你采用最适合最好的mipmap,但在这个mipmap中你只采用最近的纹素,没有这个texel和他的邻居之间的插值).

因此GL_NEAREST_MIPMAP_LINEAR用于在纹素之间进行加权平均.

有了GL_LINEAR_MIPMAP_LINEAR你可以有更多的渲染质量,因为它会使用线性插值纹理的结果之间取两点的贴图(纹理贴图N和N + 1),而不是仅仅考虑纹理的结果寄存的纹理贴图N,就像以前.

GL_LINEAR_MIPMAP_LINEAR也被称为三线性过滤.