2009-09-15 81 views
1

我有一個電腦遊戲,我正在努力,並且我想給用戶一個選項,以關閉用於速度目的的alpha合成。 Pygame並沒有在所有地方進行檢查,而是有一個全局選項來說「不要使用alpha」,這樣它會忽略所有對set_alpha和類似的調用?關閉Pygame alpha

回答

1

考慮到pygame文檔,我會說「不,沒有全局的方法來禁用alpha」
然而,有至少兩個「局部」如何做到這一點:

  • 首先將繼承pygame.Surface,並提供自己的實現set_alpha 的這反過來又可以孝敬全球Alpha設置。

  • 第二個是有點棘手,因爲它取決於使用的像素格式。 引述pygame的文檔:

Surface.set_alpha
設置alpha值對於整個表面
[...]
此值比不同每像素表面阿爾法。如果曲面格式包含每像素阿爾法的 ,那麼這個阿爾法值將被忽略。如果Surface包含每個像素 alpha,則將alpha值設置爲None將禁用每像素透明度。
[...]

有了這個,你可以提供兩套質地:

  • 一個用不透明的(每像素)的alpha通道,將所有來電改寫爲set_alpha()
  • 一個不具有每像素α和因此將孝敬set_alpha()

希望這會有所幫助!

+0

我在想我只是子類pygame.Surface - 似乎是最簡單的解決方案。 – Smashery 2009-09-15 23:51:18

0

我讀過convert()函數禁用圖像的alpha。 我知道的是:

使用convert()函數可以使我的計算機上屏幕大圖像的圖像加速到大約150 FPS,顏色深度爲16位。

image = image.convert()#video system has to be initialed