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