你怎么知道 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
并覆盖转换方法以按照您希望的方式设置标志。
标题说明了一切,真的。我正在编写处理来自多个来源的 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
并覆盖转换方法以按照您希望的方式设置标志。