我不确定是否有这个名称,但本质上我需要做的是取两个不透明的 Sprite ,以 50% 的不透明度绘制它们,并且在它们重叠的地方,不要让它看起来更暗。
左边的图像是它最初渲染的样子。然后,我想减少渲染的 Alpha,默认情况下,我得到中间的图像,但我想得到右边的图像。
我在iPhone上使用cocos2d,现在我使用Atlas Sprite Manager渲染 Sprite ,它没有自己的alpha,所以我尝试通过减少每个 Sprite 的alpha来减少alpha单独地并且还降低了源图像的 Alpha,这两者我真的不希望起作用。
是否可以启用某种混合模式,或者某种(快速)方式将完全不透明的图像渲染到辅助缓冲区,然后在与主缓冲区混合之前降低缓冲区的不透明度?
最佳答案
据我所知,没有简单的方法可以解决这个问题。我能想到的替代方案是:-
- 修改几何形状,使对象不重叠(最难编码,但性能最高)。
- 将对象渲染为完全不透明的纹理,然后渲染 Alpha 混合。
- 使用模板缓冲区(如果 iPhone 支持模板缓冲区,但我怀疑它不支持)。首先将模板设置为零,在绘制半透明多边形时将其设置为写入 1,并将条件设置为仅在缓冲区为 0 时绘制片段。
关于iphone - 渲染重叠的半透明对象而不使重叠变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274206/