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

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

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

最佳答案

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

我想到了三种方法:

  • 将所有树反射绘制到 FBO 中,不进行混合。然后在水面上绘制结果,启用混合。
  • 在绘制反射时保持启用深度测试(以防您当前禁用它)。前后绘制树反射,相对于水面略有偏移,并且每次绘制的反射都会减小偏移。因此,较近的树木的反射会隐藏较远的树木的反射。
  • 与选项 2 类似。但不是偏移量和深度测试,而是使用模板测试来确保在任何像素处只渲染一个反射树。
  • 关于ruby - Opengl、Ruby、glBlendFunc : place transparent images on top of each others as if it was opaque,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25436436/

    10-15 13:33