我不确定glBlendFunc是否是解决我的问题的好方法,但我认为我需要它!这是我的问题:你看到右边两棵松树的倒影了吗?我想要像这样的东西:那么,我需要一种方法,它可以像不透明图像一样显示,但使用透明图像。在glBlendFunc中是否有特殊组合,还是应该通过其他方式进行处理?
我认为单纯的混合方法行不通。在两个重叠的树反射的情况下,第一个反射被渲染后与水混合。当你绘制第二棵树时,你只想让第二棵树与水混合。但是帧缓冲区中水的颜色已经与第一棵树混合,所以仅有水的颜色不再存在于帧缓冲区中。三种方法浮现在脑海中:1. 将所有的树反射绘制到一个FBO中,不进行混合。然后在水面上方绘制结果,并启用混合。2. 在绘制反射时保持深度测试启用(如果当前未启用)。从前往后绘制树的反射,相对于水面略微偏移,并且每个反射绘制的偏移量逐渐减小。因此,较近的树的反射将隐藏更远处的树的反射。3. 与选项2类似。但是,使用模板测试来确保任何像素上只呈现一个反射的树。