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

时间:2009-12-10 17:40:15

标签: 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);

2 个答案:

答案 0 :(得分:10)

使用:

glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, bias);

此处有更多详情: http://www.opengl.org/sdk/docs/man/xhtml/glTexEnv.xml 那里:http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_lod_bias.txt

编辑:

好的,我明白了。首先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,您可以获得更高的渲染质量,因为它将在两个mipmap(mipmap N和N + 1)的纹理提取结果之间使用线性插值,而不是仅仅获取纹理的结果像以前一样获取mipmap N.

GL_LINEAR_MIPMAP_LINEAR也称为三线性过滤

答案 1 :(得分:1)

我尝试了这个功能,但它没有任何帮助,我想在miplevel改变时改变角度,而不是距离...是否有某种方法可以进行这种角度修复?

我不确定哪个是正确的单词所以我使用了“lod bias”...这是我发现的miplevel改变的唯一方法