Pygame Special Flags
什么是 Special Flags?
Special Flags
是一种控制如何将一个Surface
绘制到另一个Surface
的方法。它们可以用来创造视觉效果,如发光粒子,或执行表面掩蔽或操作。它们的使用方法如下: 具体来说,它们是通过
pygame.BLEND_*
作为这些方法的special_flags
参数传递的。这允许您选择如何将两个Surface
颜色组合或混合在一起。不同的Special Flags
可能产生非常不同的结果,因此通过实验了解它们的工作原理非常重要。 默认情况下,表面绘制时没有任何特殊标志,这意味着它们将基于其位深度(
depth
)和色键(colorykey
)绘制:
- 如果
Surface
有一个色键(colorkey
),匹配色键(colorkey
)的像素将是透明的。- 如果
Surface
有逐像素或全局alpha值,alpha值将用于将像素与下面的Surface
混合。- 如果
Surface
没有色键(colorkey
)或alpha值,像素将是不透明的,这意味着Surface
将有效地覆盖下面Surface
的像素。默认的绘图模式的标志是:BLENDMODE_NONE(0)。
标签:Surface,RGB,Flags,Pygame,alpha,通道,BLEND,Special,pygame From: https://www.cnblogs.com/koji233/p/18141797Special Flags 列表
无Alpha通道混合(RGB)
pygame 1.8: / 1.8.1新增功能
BLEND_ADD
/BLEND_RGB_ADD
将源颜色通道添加到目标颜色通道,最大限制为255。结果颜色总是浅色的。
BLEND_SUB
/BLEND_RGB_SUB
从目标颜色通道中减去源颜色通道,最小值为0。结果颜色总是较深。
BLEND_MULT
/BLEND_RGB_MULT
目标颜色通道乘以源颜色通道,除以256(或>> 8)。结果颜色总是较深的颜色。
BLEND_MIN
/BLEND_RGB_MIN
取源和目标颜色通道之间的最小值。
BLEND_MAX
/BLEND_RGB_MAX
取每个颜色通道的最大值
与Alpha通道(RGBA)混合
pygame 1.8.1新增功能:
BLEND_RGBA_ADD
像BLEND_RGB_ADD一样工作,但也增加了alpha通道。
BLEND_RGBA_SUB
像BLEND_RGB_SUB一样工作,但也减去alpha通道。
BLEND_RGBA_MULT
像BLEND_RGB_MULT一样工作,但也会增加alpha通道。
BLEND_RGBA_MIN
像BLEND_RGB_MIN一样工作,但也最小化了alpha通道。
BLEND_RGBA_MAX
像BLEND_RGB_MAX一样工作,但最大化了alpha通道。
特殊Alpha混合(RGBA)
New in pygame 1.9.2: pygame 1.9.2新增功能:
BLEND_PREMULTIPLIED
当颜色通道已经乘以表面alpha通道时,使用预乘法alpha混合稍微快一点的位元和更准确的混合结果。只有当你使用过
pygame.Surface.premul_alpha()
预乘表面时,你才应该使用这种混合模式,pygame.Surface.premul_alpha()
返回一个带有RGB通道预乘alpha通道的表面副本。或者如果你知道Surface已经创建或加载了预相乘的alpha颜色。你可以在这里阅读更多关于预乘法alpha混合的优点。pygame 2.0.0新增功能:
BLEND_ALPHA_SDL2
使用SDL2 blitter进行alpha混合,与Pygame 1中使用的默认blitter相比,这可能会产生略有不同的结果。该算法使用不同的近似进行阿尔法混合,并支持在阿尔法混合表面上运行长度编码(RLE)。
其他(RGB / RGBA)
BLENDMODE_NONE
这是默认的绘图模式。这相当于不传递任何特殊标志。
translate on 2024.4.17