在 GLSL 片段着色器中对纹理进行采样时,如何确定使用的 mipmap 级别?
我知道我可以使用以下textureLod(...)
方法手动采样纹理的特定 mipmap 级别:
uniform sampler2D myTexture;
void main()
{
float mipmapLevel = 1;
vec2 textureCoord = vec2(0.5, 0.5);
gl_FragColor = textureLod(myTexture, textureCoord, mipmapLevel);
}
texture(...)
或者我可以允许使用like自动选择 mipmap 级别
uniform sampler2D myTexture;
void main()
{
vec2 textureCoord = vec2(0.5, 0.5);
gl_FragColor = texture(myTexture, textureCoord);
}
我更喜欢后者,因为我更相信驱动程序对适当 mipmap 级别的判断,而不是我自己的判断。
但是我想知道在自动采样过程中使用了什么mipmap级别,以帮助我合理地采样附近的像素。GLSL 中有没有办法访问有关自动纹理样本使用的 mipmap 级别的信息?