你怎么知道 convert()/convert_alpha() 是否已经在 pygame.Surface 上被 运行?

how can you tell whether convert()/convert_alpha() has already been run on a pygame.Surface?

标题说明了一切,真的。我正在编写处理来自多个来源的 pygame.Surface objects 的函数。在其他操作中,这些功能将确保 Surface objects 他们 return 至少被 convert() 编辑一次(或者,根据用户偏好, convert_alpha() ed),因为需要优化它们以在当前显示模式下进行 blitting。但我不想 运行 convert()convert_alpha() 方法是不必要的,因为它们会创建表面的副本,因此会占用时间和内存。我如何判断我是否需要这样做?我查看了 S = S.convert_alpha() 前后 S.get_flags() 的输出,但它似乎没有改变。 S.get_alpha() 的标量值确实发生了变化(从 255 到 0),但我不认为这是有意义的或可靠的(并且它不能解决知道在这种情况下是否必须 .convert() 的问题其中 alpha 混合 不需要

我不认为现有的 API 提供了执行此操作的方法。我认为预期用途是转换 所有 你的表面(你为什么不呢?)所以你永远不必担心它。

也许可以子类化 pygame.Surface 并覆盖转换方法以按照您希望的方式设置标志。