加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Opengl,Ruby,glBlendFunc:将透明图像放在彼此的顶部,就好像它是

发布时间:2020-12-17 02:07:01 所属栏目:百科 来源:网络整理
导读:我不确定glBlendFunc是否是解决我的问题的好功能,但我认为我需要它!这是我的问题: 你看到两棵松树在右边反射了吗?我想要有类似的东西: 然后,我需要一种与不透明图像相同的显示方法,但需要透明图像. glBlendFunc中是否有特殊组合,还是应该通过其他方式进
我不确定glBlendFunc是否是解决我的问题的好功能,但我认为我需要它!这是我的问题:

你看到两棵松树在右边反射了吗?我想要有类似的东西:

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

解决方法

我认为纯混合方法不会起作用.如果您有两个重叠的树反射,第一个树在渲染后与水混合.绘制第二棵树时,您只需要将第二棵树与水混合.但是帧缓冲中的水的颜色已经与第一棵树混合在一起,所以水的颜色不再仅仅在帧缓冲中了.

我想到了三种方法:

>将所有树反射绘制到FBO中,不进行混合.然后在水面上绘制结果,并启用混合.>在绘制反射时,启用深度测试(如果您当前已将其禁用).从前到后绘制树木反射,相对于水面稍微偏移,并且每次反射时偏移量减小.因此,较近的树木的反射将隐藏更远的树木的反射.>与选项2类似.但是,不是使用偏移和深度测试,而是使用模板测试来确保在任何像素处仅渲染一个反射树.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读