سؤال

هذا السؤال يتعلق ب سؤال سابق on so.

أريد الجمع بين طبقتين مع Alpha تطبيقه فقط على جزء محدد من طبقة المصدر.إحدى الطرق التي جربتها هي تعيين Sourceconstantalpha إلى $ FF (ولديها وظيفة استخدام قناة ألفا في طبقة المصدر).

هذا النوع من الأعمال - على الرغم من البطيء (أعتقد أنني أستطيع تسريعه باستخدام Scanlines)، فإن هذا الجزء هو أنه لا يمكنني معرفة ما لضبط قناة ألفا.توحي الوثائق أن الحساب هو:

giveacodicetagpre.

لقد جربت بعض القيم المختلفة عن طريق تخمين العمل، لكن سؤالي الأول هو: كيف يمكنني حساب قيمة ألفا؟

بعد قراءة عدد قليل من الأسئلة الأخرى، صادفت وظيفة TransParentBlt، والتي تقضي جيدا (وسريع) ولكن ليس الشفافية، هل هناك طريقة للجمع هذين يدعيان معا (ربما باستخدام طبقة ثالثة)؟

giveacodicetagpre.

هل كانت مفيدة؟

المحلول

خدعة: مزج نفس الألوان في أي نسمة تؤدي إلى نفس اللون.

لذلك، فإن أبسط طريقة (وربما الأكثر كفاءة) هي أولا رسم النتيجة الشديدة إلى صورة نقطية مؤقتة، والأفوية التي تحتوي على صورة نقطية على قماش الوجهة.

مع الوصول إلى قماش الوجهة أثناء الرسم:

giveacodicetagpre.

وبدون الوصول إلى قماش الوجهة أثناء الرسم:

giveacodicetagpre.

نصائح أخرى

فقط من أجل الاكتمال ( "كيف يمكنني حساب قيمة ألفا؟" ):

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top