Отключить альфа-версию Pygame - PullRequest
1 голос
/ 15 сентября 2009

У меня есть компьютерная игра, над которой я работаю, и я хочу дать пользователю возможность отключить альфа-композитинг для скорости. Вместо того, чтобы делать проверки повсюду, есть ли у Pygame глобальная опция сказать «Не использовать альфа», чтобы она просто игнорировала все мои вызовы set_alpha и тому подобное?

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Учитывая документы Pygame, я бы сказал "нет, глобального способа отключить альфа нет" .
Однако есть как минимум два локальных способа сделать это:

  • Сначала нужно создать подкласс pygame.Surface и предоставить собственную реализацию set_alpha. который в свою очередь может соблюдать ваши глобальные настройки альфа.

  • Второй вариант немного сложнее, так как он зависит от используемого пиксельного формата. Чтобы процитировать документы по пигмеям:

Surface.set_alpha
установить значение альфа для всей поверхности
[...]
Это значение отличается от пикселя Поверхность альфа. Если формат поверхности содержит за альфа-пиксель, тогда это альфа-значение будет игнорироваться. Если поверхность содержит на пиксель Альфа, установка значения альфа на None отключит прозрачность на пиксель.
[...]

С этим вы можете предоставить два набора текстур:

  • один с непрозрачным (на пиксель) альфа-каналом, который перезапишет все ваши вызовы на set_alpha ()
  • тот, который не имеет альфа на пиксель и, таким образом, будет соблюдать вашу set_alpha ()

Надеюсь, это поможет!

0 голосов
/ 22 марта 2013

Я прочитал, что функция convert () отключает альфа изображения. Что я знаю, это:

Использование функции convert () - ускоряет перетаскивание изображения для изображений большого экрана на моем компьютере примерно до 150 кадров в секунду при глубине цвета 16 бит.

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