模板实现镜子问题

当视线垂直于镜面时,用模板实现镜子非常容易:

1,绘制镜子 : stencil test on, ref 2, cmp always, pass replace,这样镜子渲染完后,镜子 区域的像素的模板值全部写为了2。

2,绘制镜子前的物体:stencil test on, ref 2, cmp equal, 这样镜子前的物体转换到投影空间后与镜子像素重叠的部分就会被绘制出来,超出的部分将不绘制,我们看到似乎镜子中映出了物体。

但若是视线不垂直于镜面时,如下图,本就在镜子中映像出来的物体却未被映像,原因就是视线不垂直镜面,导致镜子在屏幕上的绘制区域与小球在屏幕上的绘制区域无重叠,模板比较不成功。解决办法是在绘制镜子与小球前,先将相机移到镜子前面,以此视点对镜子和小球进行如上1,2的操作

原文地址:https://www.cnblogs.com/timeObjserver/p/9524828.html