В настоящее время я использую XNA 3.1 с предварительно умноженной альфой (в 4.0 была добавлена встроенная поддержка Premultiplied Alpha).
В основном это экономит мое время и позволяет убедиться, что прозрачные области моих изображений имеют правильные цвета. Я также портирую на Silverlight, который по умолчанию выполняет предварительное умножение.
У XNA есть конвейер контента, который делает добавление предварительно обработанной предварительной обработки альфа очень простым.
Эта ссылка содержит код для преобразования. Для каждого пикселя:
c.R = (byte)(c.R * c.A / 255);
c.G = (byte)(c.G * c.A / 255);
c.B = (byte)(c.B * c.A / 255);
Многое можно сказать о наличии конвейера контента. Если вы не используете XNA, но используете Visual Studio, вы можете собрать его самостоятельно . Любые другие IDE / процессы сборки также должны быть в состоянии.
И, наконец, если у вас нет шага обработки контента в вашей сборке (и, скорее всего, у вас не так много контента в любом случае), вы можете так же легко выполнить предварительное умножение во время выполнения при загрузке текстур. Это добавит некоторый постоянный фактор к времени загрузки вашей текстуры.
(Если смысл не ясен: вам, вероятно, не следует редактировать предварительно умноженные альфа-изображения. Экспортируйте их, если можете, предварительно умножив, или, что еще лучше, предварительно обработайте их.)