当 GameMaker 绘制像素时,会存在源颜色 (我们要绘制的像素的颜色) 和目标颜色 (我们要绘制到的像素中已有的颜色),因此当确定像素的新颜色后,将根据所选的混合模式计算源颜色和目标颜色。
颜色的每个分量存储为 0 到 1 之间的浮点值,新颜色的计算方法是将源颜色的每个分量乘以某个因子,将目标颜色的每个分量乘以某个其他因子,然后加上逐个组件 (或使用不同的 方程 ) 将结果组合在一起。
此功能允许您设置如何将不同的组成部分组合在一起以创建自定义混合模式。源和目标都具有红色、绿色、蓝色和 alpha 分量,在下图中,源的 RGBA 被视为 (Rs、Gs、Bs、As),而目标的 RGBA 被视为 (Rd、Gd、Bd、Ad)。在此函数中使用时,可用的 11 个常量可以是源或目标 (或两者)。
混合模式系数常量 | |
---|---|
常量 | 混合因子(红色、绿色、蓝色、透明度) |
bm_zero | (0, 0, 0, 0) |
bm_one | (1, 1, 1, 1) |
bm_src_colour | (Rs, Gs, Bs, As) |
bm_inv_src_colour | (1-Rs, 1-Gs, 1-Bs, 1-As) |
bm_src_alpha | (As, As, As, As) |
bm_inv_src_alpha | (1-As, 1-As, 1-As, 1-As) |
bm_dest_alpha | (Ad, Ad, Ad, Ad) |
bm_inv_dest_alpha | (1-Ad, 1-Ad, 1-Ad, 1-Ad) |
bm_dest_colour | (Rd, Gd, Bd, Ad) |
bm_inv_dest_colour | (1-Rd, 1-Gd, 1-Bd, 1-Ad) |
bm_src_alpha_sat | (f, f, f, 1) where f = min(As, 1-Ad) |
重要!未启用WebGL的HTML5将无法正确显示以下模式:
请注意,您可以为此函数提供两个单独的参数,也可以提供一个参数数组(例如,由函数gpu_get_blendmode_ext()返回)。如果提供数组,则应具有以下两个元素:
为了帮助您充分利用混合模式,并帮助您了解它们如何工作以及它们如何影响绘制到屏幕的最终图像,建议您阅读以下指南:
gpu_set_blendmode_ext(src, dest);
参数 | 类型 | 描述 |
---|---|---|
src | 混合模式系数常量 | 源混合模式因子(请参见上面的常量)。 |
dest | 混合模式系数常量 | 目标混合模式因子 (请参阅上面的常量)。 |
N/A
gpu_set_blendmode_ext(bm_src_alpha, bm_one);
draw_circle_colour(100, 100, 50, c_white, c_black, 0);
gpu_set_blendmode(bm_normal);
这将使黑色变成透明,从白色在外面强烈到从圆心逐渐减弱的'发光'效果。绘制圆之后将重置混合模式,以确保在绘制圆之后不会将添加混合应用于其他任何对象。