GL_TEXTURE_MIN_LODGL_TEXTURE_MAX_LODLOD_BIAS如何工作?

为了直观地检查它,我用mipmapping创建了6 * 6纹理,对于MIN_LOD的值> 0.5,无论MAX_LOD的值如何,我都会得到3 * 3纹理。如果我更改LOD_BIAS,则不会影响我的o/p。我无法弄清楚它是如何工作的。

有人可以通过举例说明吗?

编辑:
我正在手动创建mipmap级别,以便可以观察到它正在拾取的级别。这是我的代码:

glTexImage2D(target, 0, GL_RGBA,9 ,9, 0, GL_RGBA, GL_BYTE,subpix);
glTexImage2D(target, 1, GL_RGBA,4 ,4, 0, GL_RGBA, GL_BYTE,&subpix[4]);
glTexImage2D(target, 2, GL_RGBA,2 ,2, 0, GL_RGBA, GL_BYTE,&subpix[10]);
glTexImage2D(target, 3, GL_RGBA,1 ,1, 0, GL_RGBA, GL_BYTE,&subpix[18]);
glSamplerParameterf(sampler,GL_TEXTURE_MIN_LOD,0.862);
glSamplerParameterf(sampler,GL_TEXTURE_MAX_LOD,0.99);
glSamplerParameterf(sampler,GL_TEXTURE_LOD_BIAS,0.0);

在这种情况下,我期望它将采用2 * 2的第二级mipmap级别,但是它选择4 * 4的第一级mipmap级别。当我将min lod设置为

最佳答案

首先来一些引用:

因此,如果您对mipmap的选择感到惊讶,我建议您执行以下步骤(不一定要按顺序进行):

  • 手动创建mipmap,以使它们在视觉上彼此区别
  • 验证是否正确提供了mipmap。
  • 验证您的LOD_BIAS设置不只是将所有值都超出范围,使采样器有效地始终使用最大或最小LOD。

  • 搜索此内容,我发现了 textureQueryLod 。您可能还对帮助调试感兴趣。

    关于opengl - 如何在纹理中使用OpenGL LOD?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15806204/

    10-10 21:17