pygame中的混合模式是什么意思?

时间:2009-03-02 09:45:46

标签: pygame alphablending blending

Surface.blit在1.8中有一个新参数:blend。定义了以下值:

  • BLEND_ADD
  • BLEND_SUB
  • BLEND_MULT
  • BLEND_MIN
  • BLEND_MAX
  • BLEND_RGBA_ADD
  • BLEND_RGBA_SUB
  • BLEND_RGBA_MULT
  • BLEND_RGBA_MIN
  • BLEND_RGBA_MAX
  • BLEND_RGB_ADD
  • BLEND_RGB_SUB
  • BLEND_RGB_MULT
  • BLEND_RGB_MIN
  • BLEND_RGB_MAX

有人可以解释这些模式的含义吗?

2 个答案:

答案 0 :(得分:10)

您可以在此处找到混合操作的来源:surface.h

基本上,ADD会添加两个源像素并将结果剪辑为255. SUB将两个像素和剪辑减去0。

MULTresult = (p1 * p2) / 256

MIN:选择每个频道的较低值(不是整个像素),因此如果pixel1为(100,10,0)且pixel2为(0,10,100),则会获得(0,10,0)

MAX:与MIN相反(即(100,10,100)

还有一个额外的混合模式,从文档中来看并不明显:0(或者只是保留参数)。此模式将“标记”源表面到目标。如果源表面具有Alpha通道,则将确定每个像素的“强”程度(0 =无效,255 =复制像素,128result = .5*source + .5*destination )。

有用效果:要使某个区域变暗,请使用混合模式0,将源/印章表面填充为黑色并将alpha设置为10(0,0,0,10)

要使其变亮,请使用白色(255,255,255,10)

答案 1 :(得分:2)

这些是用于将图像合成在一起的混合模式。混合模式的名称已经告诉您基础操作。

BLEND_*常量只是BLEND_RGB_*常量的别名,而BLEND_RGBA_*变体在所有四个通道(包括alpha通道)上运行,而不是仅使用RGB。

有关不同混合模式及其各自效果的一般信息,请参阅here