سؤال

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

مما وجدته باستخدام Google، هناك عدد من الخيارات للقيام بذلكهذا المقال الذي يبدو قديمًا إلى حد ما يقترح عدة طرق، منها الطرق ذات الصلة:

  • خاص بنظام Windows - استخدم CreateDIBSection وربط الملمس به بطريقة أو بأخرى.
  • استخدم ملحق pbuffers الذي يبدو أنه مدعوم على بطاقتي.

هذا الموضوع (الرسالة 6) تقترح طريقة محددة لـ QT للقيام بذلك باستخدام QGLWidget::renderPixmap

سؤالي هو - أيهما سيكون أسرع طريقة؟يبدو أن pbuffers هو الرهان الأكثر أمانًا لأنه مضمون ليتم إجراؤه على الأجهزة ولكن لا يتم استخدام طريقة CreateDIB أيضًا عبر الأجهزة؟ماذا عن طريقة كيو تي؟يبدو أن هناك مشكلة في إنشاء السياق مع هذه المشكلة.بالتأكيد لا أرغب في إنشاء سياق جديد لكل صورة أقوم بإنشائها.
هل لدى أي شخص خبرة جيدة في هذا؟


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

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

المحلول

يستخدم مكتب العمليات الفيدرالية.إنه سريع ومحمول وأفضل بكثير في الاستخدام من pbuffers.

يحرر:للحصول على أفضل أداء، قم بالتبديل بين اثنين من وحدات FBO المختلفة:

  1. تقديم إلى أ
  2. تقديم إلى ب
  3. اقرأ مرة أخرى من A وقم بمعالجتها
  4. تقديم إلى أ
  5. قراءة العودة من ب
  6. انتقل إلى 2

بهذه الطريقة يمكنك إعادة قراءة أحد FBO ثم معالجته بينما تقوم وحدة معالجة الرسومات بعرض الآخر بالتوازي.

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