سؤال

لقد لعبت مع Pygame (على Debian / Lenny). يبدو أنه يعمل بشكل جيد، باستثناء تمزيق مزعج من الصغار (وضع ملء الشاشة أو النافذة).

أنا أستخدم برنامج تشغيل SDL X11 الافتراضي. يشير googling إلى أنه مشكلة معروفة مع SDL التي يوفرها X11 أي منشأة VSYNC (حتى مع شاشة تم إنشاؤها FULLSCREEN|DOUBLEBUF|HWSURFACE الأعلام)، ويجب أن أستخدم سائق "DGA" بدلا من ذلك.

ومع ذلك، يركض

SDL_VIDEODRIVER=dga ./mygame.py

يلقي في تهيئة Pygame مع

pygame.error: No available video device

(على الرغم من xdpyinfo عرض ملحق XFREE86-DGA موجود).

هكذا: ما هي خدعة الحصول على تقلب Vsynced خالية من المسيل للدموع؟ إما عن طريق الحصول على هذا الشيء DGA العمل أو بعض الآلية الأخرى؟

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

المحلول

حسنا كان الحل في نهاية المطاف هو التبديل إلى Pyglet., ، والتي يبدو أنها تدعم OpenGL أفضل بكثير من Pygame، وليس لديها أي مشاكل وميض.

نصائح أخرى

أفضل طريقة للحفاظ على تمزيق الحد الأدنى هو الحفاظ على معدل الإطار الخاص بك أقرب إلى تردد الشاشة قدر الإمكان. لا تحتوي مكتبة SDL على VSYNC إلا إذا كنت تقوم بتشغيل OpenGL من خلاله، وبالتالي فإن الطريقة الوحيدة هي تقريب معدل الإطار بنفسك. جهاز SDL المزدوج المزدوج المخزن المؤقت غير مضمون، على الرغم من أنني لطيفة عندما تعمل. لقد رأيت ذلك في العمل.

في تجربتي مع SDL، يجب عليك استخدام OpenGL لإزالة الدموع بالكامل. إنه بعض القليل من التعديل، ولكن رسم نسيج 2D بسيط ليس كل ما معقدا ويحصل على عدد قليل من المكافآت الإضافية الأخرى التي يمكنك تنفيذها مثل الدوران والتوسع والمزج وما إلى ذلك.

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

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