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

Ed *_*rty 5 iphone opengl-es cocos2d-iphone

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

示例图片http://i45.tinypic.com/n35281.gif

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

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

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

U62*_*U62 3

据我所知,没有简单的方法可以解决这个问题。我能想到的替代方案是:-

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