1

我有一个正在开发的电脑游戏,我想给用户一个选项来关闭 alpha 合成以提高速度。Pygame 不是到处进行检查,而是有一个全局选项来表示“不要使用 alpha”,这样它就会忽略我对 set_alpha 等的所有调用?

4

2 回答 2

1

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

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

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

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

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

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

希望这会有所帮助!

于 2009-09-15T20:29:25.547 回答
0

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

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

image = image.convert()#video system has to be initialed
于 2013-03-22T10:15:10.157 回答