先使用FBO装一个深度贴图 此处要先将镜头移到光源 然后保存深度 这时候z值保存的是最近可见的片元的深度值,这里是重点。

按原始场景来 每个片元 转到光源坐标系下面进行透视除法,然后看看深度是否大于阴影贴图的 大于则在阴影中。

vec3 projCoords = fragPosLightSpace.xyz / fragPosLightSpace.w*0.5+0.5;

curD=projCoords.z;

mapD=texture(shadowMap, projCoords.xy).r

if curD>mapD 阴影中

详细的可以看看learnopengl