关掉Pygame alpha

时间:2009-09-15 01:49:17

标签: python pygame alphablending

我正在进行一项计算机游戏,我想让用户选择关闭alpha合成以达到速度目的。 Pygame没有在任何地方进行检查,而是有一个全局选项来说“不要使用alpha”,这样它就会忽略我对set_alpha和所有人的所有调用?

2 个答案:

答案 0 :(得分:1)

考虑到pygame文档,我会说“不,没有全局方法来禁用alpha”
但是至少有两种'local'方法可以做到这一点:

  • 首先是子类pygame.Surface并提供自己的set_alpha实现 这反过来可以尊重您的全球alpha设置。

  • 第二个有点棘手,因为它取决于使用的像素格式。 引用pygame文档:

  

<强> Surface.set_alpha
  设置整个表面的alpha值
   [...]
  此值与每像素Surface alpha不同。如果Surface格式包含   每个像素alphas,那么这个alpha值将被忽略。如果Surface包含每个像素   alphas,将alpha值设置为None将禁用每像素透明度    [...]

有了这个,你可以提供两组纹理:

  • 一个带有不透明(每像素)Alpha通道,会覆盖您对 set_alpha()
  • 的所有调用
  • 没有每像素alpha的一个,因此会尊重您的 set_alpha()

希望这会有所帮助!

答案 1 :(得分:0)

我已经读过convert() - 函数会禁用图像的alpha。 我所知道的是:

使用convert() - 函数可以加速将计算机上屏幕大图像的图像blitting到150 FPS左右,颜色深度为16位。

image = image.convert()#video system has to be initialed