3

如何通过 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);
4

2 回答 2

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。文本文件

编辑:

好的我明白了。FirstGL_TEXTURE_MAG_FILTER只能取两个可能的值:

  • 任何一个GL_NEAREST
  • 或者GL_LINEAR

所以使用GL_LINEAR以获得最佳效果。

然后,对于GL_TEXTURE_MIN_FILTERGL_NEAREST_MIPMAP_NEAREST您不使用纹理插值,仅使用 mipmaping(您采用最适合的最近 mipmap,但在此 mipmap 内您仅采用最近的纹素,在此纹素和他的邻居之间没有插值)。

所以GL_NEAREST_MIPMAP_LINEAR用于在纹素之间进行加权平均。

GL_LINEAR_MIPMAP_LINEAR您可以获得更高的渲染质量,因为它将在两个 mipmap(mipmap N 和 N+1)的纹理获取结果之间使用线性插值,而不是像以前那样仅获取 mipmap N 的纹理获取结果。

GL_LINEAR_MIPMAP_LINEAR也称为三线性滤波

于 2009-12-10T20:45:19.400 回答
1

我尝试了该功能,但它根本没有帮助,我想在miplevel改变时改变角度,而不是距离......有没有办法修复这个角度?

我不确定哪个是正确的词,所以我使用了“lod bias”……这是我发现的唯一关于 miplevel 更改的事情

于 2009-12-12T15:02:16.630 回答