当 GameMaker 绘制像素时,会存在源颜色 (我们要绘制的像素的颜色) 和目标颜色 (我们要绘制到的像素中已有的颜色),因此当确定像素的新颜色后,将根据所选的混合模式计算源颜色和目标颜色。
颜色的每个分量存储为 0 到 1 之间的浮点值,新颜色的计算方法是将源颜色的每个分量乘以某个因子,将目标颜色的每个分量乘以某个其他因子,然后加上结果逐个组件组合在一起。源和目标也可以根据所选的 方程 进行不同的混合。
此函数允许您使用以下常量以六种基本方式设置混合模式:
混合模式常量 | |||
---|---|---|---|
常量 | 描述 | Extended Blend Mode | Blend Equation |
bm_normal | Normal blending (the default blend mode). | (bm_src_alpha, bm_inv_src_alpha) | bm_eq_add |
bm_add | Additive blending. Luminosity values of light areas are added. | (bm_src_alpha, bm_one) | bm_eq_add |
bm_subtract | Subtractive blending. Source is subtracted from the destination. | (bm_src_alpha, bm_one) | bm_eq_subtract |
bm_reverse_subtract | Reverse subtractive blending. Destination is subtracted from the source. | (bm_src_alpha, bm_one) | bm_eq_reverse_subtract |
bm_min | Smaller value from source and destination is selected. | (bm_one, bm_one) | bm_eq_min |
bm_max | Max blending. Similar to additive blending. | (bm_src_alpha, bm_inv_src_colour) | bm_eq_add |
从上表中可以看出,这些混合模式实际上是 扩展 混合模式的组合,可以在描述 gpu_set_blendmode_ext() 的页面上找到这些模式。其中一些还使用不同的 混合方程 。
为了帮助您充分利用混合模式,并帮助您了解它们如何工作以及它们如何影响绘制到屏幕的最终图像,建议您阅读以下指南:
gpu_set_blendmode(mode);
参数 | 类型 | 描述 |
---|---|---|
mode | 混合模式常量 | 要使用的混合模式(请参见上表) |
N/A
gpu_set_blendmode(bm_add);
draw_circle_colour(100, 100, 50, c_white, c_black, 0);
gpu_set_blendmode(bm_normal);
这将使黑色变成透明,从白色在外面强烈到从圆心逐渐减弱的'发光'效果。绘制圆之后将重置混合模式,以确保在绘制圆之后不会将添加混合应用于其他任何对象。