textureQueryLod调用返回两个组件: 1. x - 表示使用mipmap级别的比例。 2. y - 详细程度。
他们俩都一样吗?
答案 0 :(得分:4)
当你遇到这样的问题,并且通过查看basic API documentation一类GLSL函数找不到它时,你应该参考formal GLSL specification。
如果您阅读规范,特别是 第8.9.1节 - 纹理查询函数 ,您将会看到“使用过的”mipmap级别的非常详细的说明。简而言之,此值是在缩小+ mipmap过滤期间用于选择最近的mipmap级别的小数部分。
除此之外,你应该有理论基础来理解第155页规范中提出的伪代码:
float ComputeAccessedLod(float computedLod)
{
// Clamp the computed LOD according to the texture LOD clamps.
if (computedLod < TEXTURE_MIN_LOD) computedLod = TEXTURE_MIN_LOD;
if (computedLod > TEXTURE_MAX_LOD) computedLod = TEXTURE_MAX_LOD;
// Clamp the computed LOD to the range of accessible levels.
if (computedLod < 0.0)
computedLod = 0.0;
if (computedLod > (float)
maxAccessibleLevel) computedLod = (float) maxAccessibleLevel;
// Return a value according to the min filter.
if (TEXTURE_MIN_FILTER is LINEAR or NEAREST) {
return 0.0;
} else if (TEXTURE_MIN_FILTER is NEAREST_MIPMAP_NEAREST
or LINEAR_MIPMAP_NEAREST) {
return ceil(computedLod + 0.5) - 1.0;
} else {
return computedLod;
}
}
此伪代码中有三个分支:
textureQueryLod (...)
返回的第二个组件是未释放的整数LOD。