在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(...)
自动选择mipmap级别,例如
uniform sampler2D myTexture;
void main()
{
vec2 textureCoord = vec2(0.5, 0.5);
gl_FragColor = texture(myTexture, textureCoord);
}
我更喜欢后者,因为我相信驱动程序对适当的mipmap级别的判断,比我自己做出的更加准确。
但我想知道在自动采样过程中使用了哪个mipmap级别,以帮助我合理地采样附近像素。在GLSL中是否有一种方法可以访问有关自动纹理采样使用了哪个mipmap级别的信息?
textureQueryLod(...)
,可以完全满足你的需求。 - Andon M. Coleman