OpenGL ES 2.0仅在不同对象上混合

时间:2016-10-11 10:47:19

标签: java android opengl-es

我想知道是否有办法混合不同的绘制调用中的对象。

我有一个粒子系统可以绘制很多彼此接近的点,我不想添加它们的颜色值。但是,我确实希望使用来自不同粒子系统绘制调用的其他粒子添加这些粒子。我知道我可以使用帧缓冲对象实现这一点,但它看起来效率不高。

1 个答案:

答案 0 :(得分:0)

直接通过混合是不可能的; GL在任何时间点唯一的状态是当前片段和帧缓冲区的内容。

您可以想象使用模板掩模(在绘制开始时清除模板,使用粒子系统中的每个三角形将模板设置为1,如果模板测试该值是否为1则失败)。然而,大多数粒子需要一定程度的alpha透明度来淡化边缘处的每个粒子,所以这可能不是你真正想要的......

实际上,由于需要一个粒子的“淡化”区域与其后面的粒子的“明亮”部分重叠,我不能完全确定你可以在不混合所有粒子的情况下完成这项工作。粒子系统在一起。