我正在尝试制作一个简单的照明引擎,允许我在 Haxe 中混合颜色 - 我标记了 flash,因为 API 几乎相同。我目前正在将彩色圆圈渲染到 BitmapData 中,然后在我的游戏顶部渲染它,但是我在渲染圆圈之间的交点时遇到了很多困难。
我想知道是否有一种方法可以绘制由其他两个形状的交集组成的形状(它可能不需要内置到 Flash 中,因为它们是圆形,所以我想数学相对简单)。这将使渲染两个圆圈变得相对简单,但是一旦我添加了第三种颜色,它就会变得非常复杂……在最坏的情况下,我永远不能使用超过两种颜色!
最后,是否可以使用某种着色器来实现这种效果?例如,每次我绘制一个像素时,查看现有颜色并查找两者的组合(例如红色+黄色=橙色)。我对 Flash 中的着色器知之甚少——尽管我使用的是 Haxe,所以它甚至可能再次不同!
我认为使用混合模式不可能干净地实现这种效果——我的实验很快就产生了像洋红色和青色这样非常明亮的颜色。我简要地研究了 L*a*b* 颜色空间,但实现起来似乎非常复杂(而且速度很慢)。
一旦我得到这个效果,我打算用颜色图检查世界中的像素位置,并根据结果应用各种效果。
任何帮助将非常感激!
编辑:Javascript 似乎内置了这个功能:Marking the intersecting area between two circles in Canvas