4

我不确定 glBlendFunc 是否是解决我的问题的好功能,但我认为我需要它!这是我的问题:

在此处输入图像描述

看到右边两棵松树的倒影了吗?我想要这样的东西:

在此处输入图像描述

然后,我需要一种与不透明图像显示相同但具有透明图像的方法。glBlendFunc 中是否有特殊组合,还是应该通过其他方式进行?

4

1 回答 1

1

我认为纯粹的混合方法行不通。如果您有两个重叠的树反射,则第一个在渲染后与水混合。当您绘制第二棵树时,您只希望第二棵树与水混合。但是帧缓冲区中水的颜色已经与第一棵树混合,因此帧缓冲区中不再单独存在水的颜色。

想到了三种方法:

  1. 将所有树反射绘制到 FBO 中,无需混合。然后在水面上绘制结果,启用混合。

  2. 在绘制反射时保持启用深度测试(如果您当前禁用它)。从前到后绘制树反射,相对于水面有轻微的偏移,并且每次绘制的反射偏移都会减小。因此,较近的树木的反射会隐藏较远的树木的反射。

  3. 与选项 2 类似。但不是偏移和深度测试,而是使用模板测试来确保在任何像素处仅渲染一个反射树。

于 2014-08-24T02:42:05.710 回答