ios - 在 iOS 的 cocos2d 中添加颜色

标签 ios cocos2d-iphone ccsprite

我正在尝试使用 cocos2d 做类似 RGB 圆的事情:

enter image description here

我有可移动的圆圈(一个用于 R,另一个用于 B,另一个用于 G),我想自动计算相交圆的颜色(无需在特定区域使用新颜色创建某些东西 - 这就是解决方案我在用)。

有没有办法自动添加颜色?

我现在在做什么?

目前,我在 CCSprite 中使用 1x1 空白 png(作为纹理),然后更改 CCSprite 的颜色(sprite.color = ccc3(r, g, b) 每个圆)。

我尝试了什么?

我尝试使用 mySprite.blendFunc = (ccBlendFunc) { GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA }; 在我的 Sprite 中使用不同的混合模式 甚至添加了一些不透明度(直接在 Sprite 中或纹理中使用模式 [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888])但我无法获得我想要的效果。

我试图在 website with several blending modes 中找到一个组合但我没有找到有效的组合。

最佳答案

不推荐使用 1x1 像素纹理。我认为旧设备甚至不会显示它们。至少使用 2x2 或更好的 4x4。不确定哪个是最小值。

如果您打算每个像素有一个 Sprite,请记住每个 Sprite 大约为 400 字节(取决于 cocos2d 版本)。这意味着用 Sprite 像素填充整个 320x480 屏幕将消耗近 60 MB 的内存!

我认为仅使用混合模式无法获得与图片中相同的结果。 You can experiment here .您必须编写一个着色器程序,或者以其他方式将每个子部分渲染为一个填充多边形,其颜色由每个重叠 Sprite 的基色决定。

由于您只能将混合模式应用于整个 Sprite (在本例中为圆形),混合模式对于一个交叉点可能是正确的,但它也会与背景混合,这不是您想要的。我不是 100% 确定,但我认为这种 RGB 颜色添加不适用于混合模式是有技术原因的。也许对 OpenGL ES 渲染技术有更好理解的人可以提供帮助。

关于ios - 在 iOS 的 cocos2d 中添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350057/

相关文章:

iphone - 在头文件中使用变量和常量定义进行本地化

ios - 选择节标题时显示行

iphone - iOS 应用程序缺少屏幕截图

cocos2d-iphone - 如何在cocos 2d中移动背景

ios - cocos2d。对象类似于ccsprite但没有图片吗?

iOS - 本地化静态常量

ios - 应用程序右侧的 ionic 空白

ios - 使用Pubnub发送网络数据时,Box2d会短暂卡住。

ios - 在单个 CCSprite 上管理子 Sprite ?

ios - 此行的正确内存管理? (Cocos2D)