渲染重叠的半透明对象,不会使重叠变暗

时间:2010-02-16 16:01:58

标签: iphone opengl-es cocos2d-iphone

我不确定是否有这个名称,但基本上我需要做的是拍摄两个不透明的精灵,以50%不透明度绘制它们,并且它们重叠的地方,不要让它看起来更暗。< / p>

Example Image http://i45.tinypic.com/n35281.gif

左边的图像是它最初渲染的方式。然后,我想减少渲染的alpha,默认情况下,我得到中间的图像,但我想得到右边的图像。

我在iPhone上使用cocos2d,现在我正在使用Atlas Sprite Manager渲染精灵,它没有自己的alpha,所以我尝试通过减少每个精灵的alpha来减少alpha单独地,也减少了源图像的alpha值,这两者都不是我真正期望的。

是否可以启用某种混合模式,或者某种(快速)方式将完全不透明的图像渲染到辅助缓冲区,然后在将缓冲区与主缓冲区混合之前降低缓冲区的不透明度?

1 个答案:

答案 0 :(得分:3)

AFAIK没有简单的方法围绕这个。我能想到的替代方案是: -

  1. 修改几何体,使对象不重叠(最难编码,但性能最高)。
  2. 将对象渲染为完全不透明的纹理,然后渲染alpha混合。
  3. 使用模板缓冲区(如果iPhone支持模板缓冲区,我怀疑它没有)。从模板设置为零开始,将其设置为在绘制半透明多边形时写入1,并将条件设置为仅在缓冲区为0时绘制片段。