سؤال

عند كتابة دايركت التطبيقات ، من الواضح أنه من المرغوب فيه أن دعم المستخدم تعليق تطبيق عبر Alt-علامة التبويب بطريقة سريعة وخالية من الأخطاء.ما هو أفضل مجموعة من الممارسات لضمان هذا ؟ الأشياء التي تحتاج إلى معالجة ما يلي:

  1. أفضل أساليب الكشف عند التطبيق الخاص بك قد تم alt-كلفه الخروج من و عندما عاد.
  2. ما دايركت الموارد فقدت عندما يقوم المستخدم alt-علامات التبويب ، وأفضل الطرق للتعامل مع هذا.
  3. الأشياء الرئيسية أن تفعل أشياء يجب تجنبها في بنية التطبيق لأغراض alt-tab الدعم.
  4. أي اختلافات كبيرة بين كبرى دايركت الإصدارات كما أنها تنطبق على ما سبق.

الحيل مثيرة للاهتمام و gotchas هي أيضا جيدة أن نسمع عن.

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

المحلول

وسوف نفترض كنت تستخدم C++ لأغراض إجاباتي, ولكن إذا كنت تستطيع استخدام C#, XNA (http://creators.xna.com/) هي لعبة ممتازة المنبر الذي يعالج كل هذه القضايا بالنسبة لك.

1]

هذا المقال مفيد ويندوز الأحداث في إطار إجراء الكشف عند نافذة يفقد أو يكتسب التركيز, هل يمكن التعامل مع هذا على النافذة الرئيسية: http://www.functionx.com/win32/Lesson05.htm.أيضا, تحقق من WM_ACTIVATEAPP الرسالة هنا: http://msdn.microsoft.com/en-us/library/ms632614(مقابل.85).aspx

2]

3]

وأود أن تأكد أن لا تعطيل Alt-Tab.ربما كنت تريد الحد الأدنى من تحميل وحدة المعالجة المركزية في حين أن التطبيق غير نشط لأن المستخدم ربما Alt-كلفه لأنها تريد أن تفعل شيئا آخر ، لذلك يمكن تماما وقفة التطبيق أو الحد من إطارات المقدمة في الثانية.إذا كان التطبيق هو minimzed ، بالطبع لا تحتاج إلى تقديم أي شيء.بعد التفكير في الشبكة لعبة, أفضل حل هو أن عليك أن لا تزال تقلل من إطارات المقدمة في الثانية فضلا عن كمية من شبكة الحزم التعامل معها ، وربما حتى رمي العديد من الحزم التي تأتي حتى في اللعبة هو إعادة تفعيلها.

4]

بصراحة أنا مجرد عصا DirectX 9.0 c (أو DirectX 10 إذا كنت تريد أن تحد من الهدف الخاص بك نظام التشغيل Vista و أحدث) إذا أمكن :)

أخيرا, DirectX sdk لديه العديد من الدروس و العينات: http://www.microsoft.com/downloads/details.aspx?FamilyID=24a541d6-0486-4453-8641-1eee9e21b282&displaylang=en

نصائح أخرى

نحلها من خلال عدم استخدام جهاز DirectX ملء الشاشة على الإطلاق - بدلا من ذلك، استخدمنا نافذة ملء الشاشة مع أعلى العلم لجعله يخفي شريط المهام. إذا خرجت من ذلك، يمكنك إزالة العلم وتقليل النافذة. يتم الاحتفاظ بموارد الملمس على قيد الحياة بواسطة النافذة.

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

يجب أن تكون جميع تطبيقات D3D الخطيرة قادرة على التعامل مع الأجهزة المفقودة لأن هذا شيء يمكن أن يحدث لمجموعة متنوعة من الأسباب.

في DX10 ضمن Vista، هناك ميزة جديدة "كشف المهلة والاسترداد" الجديدة التي تجعلها شائعة في تجربتي لإعادة تعيين أجهزة الرسومات والتي من شأنها أن تسبب جهاز ضائع لتطبيقك. يبدو أن هذا يتحسن كبرامج تشغيل ناضجة ولكنك تحتاج إلى التعامل معها على أي حال.

في DX8 و 9 (و 10؟) إذا قمت بإنشاء مواردك (Vertex ومؤشرات مخازن المؤشرين والمؤشرين بشكل أساسي) باستخدام D3DPool_Managed أنها ستستمر عبر الأجهزة المفقودة ولن تحتاج إلى إعادة التحميل. هذا لأنهم يتم تخزينهم في ذاكرة النظام ونسخ DX لذاكرة الفيديو تلقائيا. ومع ذلك، هناك تكلفة أداء بسبب النسخ ولا ينصح بهذا لبيانات قمة الرأس بسرعة. بالطبع سوف تقوم أولا بتحديد ما إذا كانت هناك مشكلة في السرعة :-)

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