للأسف لا يمكنك فعل ذلك عن طريق DDraw مع دعم الـ Hardware. الطريقة الوحيدة هي أن تقوم بتنفيذ كل عمليات الـ Blt التي تحوي Alpha Blending بشكل يدوي على الـ CPU ثم ترفيع الذاكرة الناتجة إلى surface في الـ HAL. كما ترى، العملية حقاً معقدة... بعض الألعاب تتحايل على الشفافية بوضع تنسيق (pattern) من البكسلات الشفافة ضمن الصورة المطلوب منها أن تشف. طبعاً هذه الحيلة لا تنفع مع لاعبي اليوم (تباً لهم!)...
البديل الجذري هو الآخر أن تنتقل إلى D3D9 وتستخدم إمكانياته الهائلة في هذا المجال...
دمج AlphaBlending: يعني ممكن أن تستخدم D3D لإظهار سبرايتات مثل DDraw؟ هل يوجد أية تعقيدات إضافية أو محدوديات؟ هل يوجد إمكانية الـ color key في الـ blit؟
__ هناك 10 أنواع من البشر.. من يعرف نظام العد الثنائي، ومن لا يعرفه!
اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم
طبعاً يمكنك ذلك! لا يوجد colorkey بمفهومه نفسه، وإنما هناك الـ alpha channel التي تعطيك إمكانيات ومرونة تفوق الـ colorkey بمراحل. هناك بعض المحدوديات... حتى الآن، الكثير من كروت الشاشة تتطلب أن تكون أبعاد الصورة التي تحوي الـ sprite من أحد قوى الـ 2 (مثلاً 32 و 64 و 256)... فقد يكون هناك بعض التبذير في المساحات، لكن لا يشكل هذا الأمر مشكلة مع الحجم الكبير لكروت الشاشة المعاصرة. المحدودية الثانية هي غياب الـ palettes. هي ما زالت موجودة في Direct3D9 ، لكني حتى الآن لم أرَ كرت شاشة يدعمها في D3D... إذن باي باي للـ palette animation والـ 256 لوناً...
المحاسن؟ أولاً، عمليات دمج alpha blending بمرونة هائلة وتحكم كامل... ثانياً، إمكانية الفتل والتكبير (rotation and zoom) كما يحلو لك... وكل ذلك مسرَّع باستخدام الـ HAL... أي لا تحتاج لكتابة إجراءات خاصة على الـ CPU لفعل ذلك...
أنا متحمس للنقلة إلى D3D... لكن هل لدى أحدكم أي تخيل عن الوقت اللازم لإنجازها؟ أنا لدي خلفية جيدة في العمل مع DDraw... __ هناك 10 أنواع من البشر.. من يعرف نظام العد الثنائي، ومن لا يعرفه!
اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم
هناك بعض التسهيلات عن DDraw، لكن بالمقابل هناك الكثير من الأمور الجديدة التي عليك تعلمها... أنا أعطي فترة شهر إلى شهرين لمثل هذه النقلة لمن ليس لديه أية خلفية عن رسم الـ 3D مسبقاً...