当 GameMaker 绘制像素时,会有一个源颜色 (我们要绘制的像素的颜色) 和一个目标颜色 (我们要绘制到的像素中已经存在的颜色),因此需要处理源颜色和目标颜色以创建最终的像素值。
将源像素和目标像素乘以设置的 因子 后,现在需要将这两个像素混合在一起以生成最终像素值。默认情况下,它们会相加,这意味着最终像素的形式为:( 源 * 因子 )+( 目标 * 因子 )。
使用此函数,您可以更改从源和目标计算最终像素的方式,并且可以在以下方程之间进行选择:
混合模式方程常数 | ||
---|---|---|
常量 | 描述 | 方程 |
bm_eq_add | Add both together (the default equation). | 来源 + 目的地 |
bm_eq_subtract | Subtract source from destination. | 目的地 - 来源 |
bm_eq_reverse_subtract | Subtract destination from source. | 来源 - 目的地 |
bm_eq_min | Use whichever value is smaller. | 最小 (源,目的地) |
bm_eq_max | Use whichever value is larger. | 最大 (源,目的地) |
重要 当使用 bm_eq_min 或 bm_eq_max 作为混合方程时,不会应用 混合因子 ,这与使用 bm_one 作为混合方程是相同的因子。
您可以通过调用 gpu_set_blendequation_sepalpha 分别为颜色分量 (RGB) 和 alpha 分量设置不同的方程。
为了帮助您充分利用混合模式并帮助了解它们的工作原理以及它们如何影响绘制到屏幕上的最终图像,我们建议您阅读以下指南:
gpu_set_blendequation(equation);
参数 | 类型 | 描述 |
---|---|---|
equation | 混合模式方程常数 | 混合模式方程 (参见上面的常数)。 |
N/A
gpu_set_blendmode_ext(bm_src_alpha, bm_one);
gpu_set_blendequation(bm_subtract);
draw_circle(100, 100, 50, 0);
gpu_set_blendmode(bm_normal);
这会更改混合模式因子,然后更改方程,绘制一个圆并重置混合模式因子和方程 (通过切换到正常混合模式),以便它们不会影响此后绘制的内容。
这里的混合将按如下方式运行:它将源像素与源 Alpha 相乘,并将目标像素与 1 相乘 (保持与原来相同)。然后它将从目标中减去源。