我不确定 glBlendFunc 是否是解决我的问题的好功能,但我认为我需要它!这是我的问题:
看到右边两棵松树的倒影了吗?我想要这样的东西:
然后,我需要一种与不透明图像显示相同但具有透明图像的方法。glBlendFunc 中是否有特殊组合,还是应该通过其他方式进行?
我不确定 glBlendFunc 是否是解决我的问题的好功能,但我认为我需要它!这是我的问题:
看到右边两棵松树的倒影了吗?我想要这样的东西:
然后,我需要一种与不透明图像显示相同但具有透明图像的方法。glBlendFunc 中是否有特殊组合,还是应该通过其他方式进行?
我认为纯粹的混合方法行不通。如果您有两个重叠的树反射,则第一个在渲染后与水混合。当您绘制第二棵树时,您只希望第二棵树与水混合。但是帧缓冲区中水的颜色已经与第一棵树混合,因此帧缓冲区中不再单独存在水的颜色。
想到了三种方法:
将所有树反射绘制到 FBO 中,无需混合。然后在水面上绘制结果,启用混合。
在绘制反射时保持启用深度测试(如果您当前禁用它)。从前到后绘制树反射,相对于水面有轻微的偏移,并且每次绘制的反射偏移都会减小。因此,较近的树木的反射会隐藏较远的树木的反射。
与选项 2 类似。但不是偏移和深度测试,而是使用模板测试来确保在任何像素处仅渲染一个反射树。