通过OpenGL函数调用调整OpenGL纹理LOD偏差?

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);
1个回答

11

使用:

glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, bias);

更多详细信息请参见:http://www.opengl.org/sdk/docs/man/xhtml/glTexEnv.xmlhttp://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表示不使用纹理插值,只进行mipmap处理(选择最适合的最近的mipmap,但在该mipmap内仅选择最近的texel,而不插值其邻居之间)。

因此,使用GL_NEAREST_MIPMAP_LINEAR来进行这些像素之间的加权平均。

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

GL_LINEAR_MIPMAP_LINEAR也称为三线性过滤


是的...而且使用OpenGL LOD偏差,规范在谷歌上排名第一。 - Bahbar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接