代码之家  ›  专栏  ›  技术社区  ›  Ed Marty

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

  •  5
  • Ed Marty  · 技术社区  · 15 年前

    我不确定是否有这个名字,但实际上我需要做的是取两个不透明的精灵,以50%的不透明度绘制它们,在它们重叠的地方,不要让它看起来更暗。

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

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

    我在iPhone上使用了cocos2d,现在我正在使用一个没有自己alpha的Atlas Sprite管理器渲染精灵,所以我尝试通过单独降低每个精灵的alpha来降低alpha,同时也降低源图像的alpha,这两个都不是我真正期望的效果。

    有没有一些混合模式我可以启用,或一些(快速)的方式渲染完全不透明的图像到一个二级缓冲区,然后降低不透明度的缓冲区,然后再与主缓冲区混合?

    1 回复  |  直到 15 年前
        1
  •  3
  •   U62    15 年前

    阿法克,绕过这条路可不容易。我能想到的备选方案是:

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