OpenGL的; 重叠的Alpha透明粒子

 真的长茎使人愁 发布于 2023-02-12 11:25

我正在用C语言编写一个OpenGL程序,它实现了alpha透明的Bill Boarding粒子,它通过pnglib使用PNG(透明度)作为纹理.但是,我发现粒子的透明区域仍然会替换它前面的粒子.换句话说,新调用的粒子虽然在某些区域是透明的,但是完全重叠在它们之前调用的一些粒子,相反,那些先前称为粒子的粒子应该透过透明度来显示.

为了可视化它所具有的效果,我附上一些图像来显示问题:

最初我称这些粒子从最老到最新: 正视图

但是,当视图更改时,重叠效果显而易见: 后视图

当我决定撤销通话顺序时,我得出相反的结论: 后视图订单已撤消 前视图顺序已反转

我认为解决这个问题的方法是将粒子从最远离相机调到最近.然而,遍历每个活动粒子,从最远到最近的顺序排序,然后每个显示帧调用每个粒子,计算量很大.我希望找到一个更简单,更有效的解决方案.我已经试过了,glBlendFunc()但没有sfactordfactor似乎工作.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有