На даний момент я використовую XNA 3.1 з попередньо розмноженою альфаю (натиснута підтримка Alfa Alpha в 4.0).
Здебільшого це економить мені час на проходження і гарантує, що прозорі області моїх зображень мають правильні кольори. Я також портую до 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 / build також повинні бути спроможними.
І нарешті, якщо у вас немає кроку обробки контенту у вашій збірці (і тому шанси у вас все одно не мають великого вмісту), ви можете так само легко виконати попереднє множення під час виконання тексту, коли ви завантажуєте текстури. Це додасть деякий постійний фактор до часу завантаження текстури.
(Якщо значення не було зрозумілим: ви, ймовірно, не повинні редагувати попередньо множинні альфа-зображення. Експортуйте їх попередньо, якщо ви можете, а ще краще попередньо обробити їх.)