gpu_set_blendmode_ext_sepalpha

GameMaker 绘制像素时,会存在源颜色 (我们要绘制的像素的颜色) 和目标颜色 (我们要绘制到的像素中已有的颜色),因此当确定像素的新颜色后,将根据所选的混合模式计算源颜色和目标颜色。

颜色的每个分量存储为 0 到 1 之间的浮点值,新颜色的计算方法是将源颜色的每个分量乘以某个因子,将目标颜色的每个分量乘以某个其他因子,然后加上逐个组件 (或使用不同的 方程 ) 将结果组合在一起。

此功能允许您设置如何将不同的组件部分分解在一起以创建自定义混合模式,为 RGB 组件和 Alpha 组件选择不同的混合模式因子。因此,"src" 和 "dest" 参数将使用前 3 个混合模式值 (RGB),"alphasrc" 和 "alphadest" 参数将采用混合模式因子的最后一部分。例如,如果您的 RGB 源为 bm_zero,则将使用 (0, 0, 0)。如果您随后将 Alpha 源设置为 bm_one,则将使用 (1),最终的源混合模式为 (0, 0, 0, 1)。

下图显示了每个混合模式的 RGBA 值,其中(R、G、B、As)被视为源值,(Rd、Gd、Bd、Ad)是目标值。在此函数中使用时,可用的十一个常量可以是源或目标(或两者)。

混合模式系数常量
常量混合因子(红色、绿色、蓝色、透明度)
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_se丈()返回)。如果提供数组,则应具有以下四个元素:

为了帮助您充分利用混合模式,并帮助您了解它们如何工作以及它们如何影响绘制到屏幕的最终图像,建议您阅读以下指南:

 

语法:

gpu_set_blendmode(src, dest, alphasrc, alphadest);

参数类型描述
src混合模式系数常量RGB 的源混合模式因子 (请参见上面的常量)。
dest混合模式系数常量RGB 的目标混合模式因子 (请参见上面的常量)
alphasrc混合模式系数常量源混合模式因子 Alpha(请参见上面的常量)。
alphadest混合模式系数常量目标混合模式因子 Alpha(请参见上面的常量)

 

返回:

N/A

 

例子:

var bm = gpu_get_blendmode_ext_sepalpha();
bm[0] = bm_src_alpha;
bm[1] = bm_inv_src_alpha;
gpu_set_blendmode_ext_sepalpha(bm);

上述代码将创建一个局部数组,并获取具有单独 Alpha 值的当前扩展混合模式。然后操纵该数组并返回以设置混合模式。