سؤال

لدي سؤال noobish لأي مبرمج رسومات.

أنا في حيرة من أمري كيف يمكن لبعض الألعاب (مثل Crysis) أن تدعم كلاً من DirectX 9 (في XP) و10 (في Vista)؟

ما أفهمه حتى الآن هو أنه إذا كتبت تطبيق DX10، فيمكن تشغيله فقط في نظام التشغيل Vista.

ربما لديهم قاعدتي رموز - واحدة مكتوبة في DX9 والأخرى في DX10؟ولكن أليس هذا مبالغة؟

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

المحلول

لديهم مساران للعرض، أحدهما يستخدم مكالمات DX9 والآخر يستخدم مكالمات DX10.واجهات برمجة التطبيقات غير متوافقة، على الرغم من أنه يمكن إعادة استخدام أغلبية أي محرك لعبة لأي منهما.إذا كنت تريد بعض الأمثلة مفتوحة المصدر لكيفية تنفيذ خطوط العرض المختلفة، فانظر إلى شيء مثل Ogre3d، الذي يدعم عرض OpenGL وDX9 و(قريبًا)DX10.

نصائح أخرى

عادةً ما تكون طبقة عرض الألعاب جزءًا معزولًا/مجردًا جيدًا من التطبيق بأكمله.بقدر ما يتعلق الأمر بمحرك اللعبة، فكل إطار تقوم ببساطة ببناء قائمة من الكائنات المفاهيمية (الأشجار والشخصيات وما إلى ذلك).إذا اختار محرك اللعبة عرض كائن معين، فإن الأمر متروك لطبقة العرض لكيفية ترجمة هذا الهدف فعليًا إلى استدعاءات رسم DX.سيؤدي عرض DX10 إلى إنشاء مجموعة مختلفة من استدعاءات السحب لطبقة DX9، ولكن من الناحية النظرية ما زالوا يقومون بنفس الإجراء - "عرض هذه الشجرة".

يتم تجريد العرض بشكل جيد لأنه من النادر أن ترغب في الحصول على أي معلومات مرة أخرى من طبقة العرض، بمجرد تنفيذ إجراء "عرض هذه الشجرة"، سيفترض محرك اللعبة أن العرض يبدو صحيحًا.ليست هناك حاجة كبيرة للتعامل مع النتائج المحتملة المختلفة من استدعاءات عرض DX9/DX10 لأن 99.9% من المعلومات تنتقل من المحرك إلى نظام الرسومات، ومن المحتمل أن تأخذ نسبة 0.1% التي تعود نفس الشكل بين واجهتي برمجة التطبيقات.

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

من المحتمل أن يكون لديهم طبقة تجريدية ويتطورون ضدها.في وقت التشغيل يقومون بإنشاء مثيل لمحركات تغليف الخرسانة DX9 أو DX10.

أتخيل أن تجريدهم تم وضعه بالقرب من طبقة DirectX ويوفر ببساطة لـ DX9 تطبيقات يدوية معقولة لوظائف DX10 أو يعزز منطق DX9 عند التشغيل على DX10.

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