سؤال

أحاول مزج العفاريت والخلفيات مع ألفا devkitPro (بما في ذلك libnds وlibarm وما إلى ذلك).

لا أحد يعرف كيفية القيام بذلك؟

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

المحلول

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

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

ل العفاريت، على وجه التحديد, ، لديك بعد ذلك ثلاث طرق لتحقيق مزج ألفا اعتمادًا على ما تحتاجه وما أنت "مستعد لدفعه" مقابل ذلك:

  • يمكنك جعل جميع الكائنات تتمتع ببعض مزج ألفا عن طريق التشغيل BLEND_SRC_SPRITE في REG_BLDCNT[_SUB] ...ليس هذا مفيدا.
  • يمكنك تشغيل مزج بعض الكائنات بشكل انتقائي باستخدام ATTR0_TYPE_BLENDED.سيكون مستوى المزج هو نفسه بالنسبة لجميع النقوش المتحركة (والطبقات)
  • تستخدم النقوش المتحركة من نوع الصورة النقطية ألوانًا مباشرة (تتجاوز اللوحات)، لذا فإن ATTR2_PALETTE() مجال العفاريت GBA عديم الفائدة وتم إعادة تدويره إلى ATTR2_ALPHA.

نصائح أخرى

يمكن مزج العفاريت الموجودة على DS باستخدام ملف سجلات التحكم في المزيج.يوفر TONC المعلومات اللازمة لتشغيل المزج على الشاشة الرئيسية لأن مواقع التسجيل هي نفسها.يستخدم مزج ألفا على الشاشة الفرعية نفس العملية مع تسجيلات مختلفة بإزاحة 1000 ساعة.

السجلات التي ستنظر إليها هي REG_BLDMOD, REG_COLV, ، و REG_COLY للشاشة الرئيسية و REG_BLDMOD_SUB, REG_COLV_SUB, ، و REG_COLY_SUB للشاشة الفرعية .

تذكر أيضًا أنه سيتعين عليك ذلك تغيير الوضع الرسومي للكائن لتمكين المزج لكل كائن.

لقد كان أ طويل منذ أن قمت بأي برمجة GBA، ولكن على ما أذكر، يدعم DS معظم (إن لم يكن كل) الأشياء التي يدعمها GBA. هذا يحتوي الرابط على قسم حول كيفية عمل مزج ألفا لـ GBA (القسم 13.2).لا أعرف إذا كانت هناك طريقة خاصة بـ DS للقيام بذلك، ولكن هذا يجب أن يناسبك.

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