如何通过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);
答案 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改变的唯一方法