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

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

最佳答案

用途:

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 中你使用仅最近的纹素,在这个纹素和他的邻居之间没有插值)。

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

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

GL_LINEAR_MIPMAP_LINEAR 也称为三线性过滤

关于通过opengl函数调用调整opengl纹理lod偏差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882690/

相关文章:

cocoa - Mac OpenGL 应用程序中的控制台

javascript - 在 three.js 中向对象(白色圆圈)添加文本

android - 如何在opengl android中绘制图像

c++ - 如何使用 tilemap 将纹理坐标完美映射到 tile?

opengl - 如何在纹理中使用 OpenGL LOD?

ios - Swift:无法使用类型为 'init' 的参数列表调用 '($t3, NSString)'

opengl - 统一 block 的动态数量

c++ - 使用 OpenGL 比较两个图像

opengl - GLSL纹理坐标到绝对像素?

cocoa - 如何选择屏幕区域并将其另存为 CGimage 或 CIImage?