Pygame - Special Flags 文档翻译

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)。


Special 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

posted @ 2024-04-17 21:12  Koji_233  阅读(124)  评论(0)    收藏  举报