Frage

Ich habe ein Computerspiel arbeite ich an, und ich will dem Benutzer eine Möglichkeit geben, Alpha Blending für Geschwindigkeitszwecke auszuschalten. Anstatt Kontrollen überall tun, hat Pygame eine globale Option zu sagen, solche „nicht alpha Verwenden Sie“, dass es nur alle meine Anrufe zu set_alpha ignorieren würde und die Gleichen?

War es hilfreich?

Lösung

die pygame docs bedenkt, dass ich sagen würde, "Nein, es gibt keine globale Art und Weise Alpha zu deaktivieren" .
Allerdings gibt es mindestens zwei 'local' Möglichkeiten, es zu tun:

  • Zuerst wäre pygame.Surface Unterklasse und eine eigene Implementierung von set_alpha bieten was wiederum könnte Ihre globalen Alpha-Einstellungen ehren.

  • Der Zweite ist ein wenig komplizierter als es auf das Pixel-Format im Einsatz abhängt. Um die pygame docs zu zitieren:

  

Surface.set_alpha
   stellen Sie den Alpha-Wert für die gesamte Oberfläche
   [...]
  Dieser Wert ist anders als die pro Pixel Oberfläche alpha. Wenn die Oberflächen-Format enthält   pro Pixel Alphas, dann wird dieser Alpha-Wert ignoriert. Wenn die Oberfläche enthält pro Pixel   Alphas, den Alpha-Wert auf Keine Einstellung deaktivieren die pro Pixel Transparenz.
   [...]

Damit Sie zwei Sätze von Texturen liefern könnten:

  • ein mit einem undurchsichtigen (pro Pixel) Alphakanal, der alle Anrufe auf überschreibt set_alpha ()
  • ein, die keine pro-Pixel-alpha hat und damit zu ehren set_alpha ()

Hope dies dazu beitragen wird!

Andere Tipps

Ich habe gelesen, dass die convert () - Funktion Bild Alpha deaktiviert. Was ich weiß, ist:

Mit der convert () -. Funktion beschleunigt Blitten das Bild für Bildschirm-große Bilder auf meinem Computer auf rund 150 FPS mit einer Farbtiefe von 16 Bit

image = image.convert()#video system has to be initialed
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top