作業中のコンピューターゲームがあり、速度を上げるためにアルファ合成をオフにするオプションをユーザーに提供したいと考えています。Pygameには、どこでもチェックを行うのではなく、set_alphaなどへのすべての呼び出しを無視するように「alphaを使用しないでください」と言うグローバルオプションがありますか?
2 に答える
pygameのドキュメントを考えると、 「いいえ、アルファを無効にするグローバルな方法はありません」と言います。
ただし、これを行うには少なくとも2つの「ローカル」方法があります。
まず、pygame.Surfaceをサブクラス化し、set_alphaの独自の実装を提供します。これにより、グローバルアルファ設定を尊重できます。
2つ目は、使用しているピクセル形式に依存するため、少し注意が必要です。pygameのドキュメントを引用するには:
Surface.set_alpha
は、サーフェス全体のアルファ値を設定します
[...]
この値は、ピクセルごとのサーフェスアルファとは異なります。Surface形式にピクセルごとのアルファが含まれている場合、このアルファ値は無視されます。Surfaceにピクセルごとのアルファが含まれている場合、アルファ値をNoneに設定すると、ピクセルごとの透明度が無効になります。
[...]
これにより、2セットのテクスチャを提供できます。
- set_alpha()へのすべての呼び出しを上書きする不透明な(ピクセルごとの)アルファチャネルを持つもの
- ピクセルごとのアルファがないため、set_alpha()を尊重するもの
これがお役に立てば幸いです。
convert()関数が画像のアルファを無効にすることを読みました。私が知っていることは:
convert()関数を使用すると、コンピューター上の画面の大きな画像の画像を、色深度16ビットで約150FPSに高速化できます。
image = image.convert()#video system has to be initialed