ฉันใช้ XNA 3.1 ในขณะนี้ด้วยอัลฟ่าก่อนกำหนด (การสนับสนุนอัลฟ่า Premultiplied ดั้งเดิมถูกเพิ่มใน 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 อื่น ๆ ควรมีความสามารถเช่นกัน
และสุดท้ายถ้าคุณไม่มีขั้นตอนการประมวลผลเนื้อหาในงานสร้างของคุณ (และราคาต่อรองคือคุณไม่มีเนื้อหาจำนวนมากอยู่แล้ว) คุณสามารถดำเนินการก่อนกำหนดได้อย่างง่ายดายเมื่อรันไทม์เมื่อคุณโหลดพื้นผิวของคุณ มันจะเพิ่มปัจจัยคงที่บางอย่างให้กับความเร็วในการโหลดพื้นผิวของคุณ
(หากความหมายไม่ชัดเจนคุณอาจไม่ควรแก้ไขภาพอัลฟ่าก่อนกำหนดส่งออกภาพก่อนกำหนดหากทำได้หรือดีกว่ายังประมวลผลล่วงหน้า)