Вопрос

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

Это было полезно?

Решение

Учитывая документы pygame, я бы сказал "нет, глобального способа отключить alpha не существует"..
Однако есть по крайней мере два "местный" способы сделать это:

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

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

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

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

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

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

Другие советы

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

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

image = image.convert()#video system has to be initialed
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top