gpt4 book ai didi

ruby - Opengl, ruby ,glBlendFunc : place transparent images on top of each others as if it was opaque

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:47 26 4
gpt4 key购买 nike

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

enter image description here

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

enter image description here

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

最佳答案

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

我想到了三种方法:

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

  2. 在绘制反射时保持深度测试处于启用状态(以防您当前禁用它)。从前到后绘制树的倒影,相对于水面有轻微的偏移,并且随着绘制的每个倒影的偏移量递减。所以近处树木的倒影会掩盖远处树木的倒影。

  3. 与选项 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com