1

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

在此处输入图像描述

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

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

我现在在做什么?

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

我尝试了什么?

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

我试图在网站上找到具有多种混合模式的组合,但没有找到有效的组合。

4

1 回答 1

2

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

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

我认为仅使用混合模式无法获得与图片相同的结果。你可以在这里做实验。您必须编写一个着色器程序,或者以其他方式将每个子部分渲染为填充多边形,其颜色由每个重叠精灵的基色确定。

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

于 2012-09-10T20:25:05.667 回答