textureProjLodOffset()
函数实现了带有LOD偏移的投影纹理采样。它返回相应投影纹理上指定坐标的采样颜色像素。在使用此函数之前,必须先将投影纹理绑定到一个纹理单元。
GLfloat textureProjLodOffset(sampler2DShadow sampler, vec4 P, float lod, vec2 offset)
sampler
:投影纹理采样器。P
:需要投影的位置坐标。它是一个由4个成分组成的向量 (x, y, z, 1)
,其中 (x, y, z)
是在需要进行投影的位置坐标。lod
:指定使用的LOD级别。在投影采样中,LOD级别通常用于指定纹理尺寸为 ( 2^(LOD) * 2^(LOD) ) 的纹理子集的正确 Mip层次。offset
:LOD值偏移的条目,以像素为单位(只在 OpenGL ES 和 OpenGL 程序中有效)。textureProjLodOffset()
函数的返回值是一个颜色向量。如果采样不在投影内,返回值为零向量(黑色)。
使用 textureProjLodOffset()
函数,我们可以采样投影纹理并对其应用修饰。
vec4 color = textureProjLodOffset(shadowMap, projectedTexCoords, 1.0, vec2(0.0, 0.0));
如果输入的 sampler
不存在或者没有绑定到纹理单元中,则该函数的结果是未定义的。
如果 lod
值不在纹理可用的 mipmap 级别范围内,结果是未定义的。
如果 offset
的值不是整数值,则 offset
中的分量将被截断到其整数部分,然后进行采样操作。如果采样不在投影面内,则该函数的结果为黑色。
如果 P
的 w 分量不等于1,则结果为黑色。