سؤال

أود إنشاء سياق OpenGL مع GLX داخل النافذة. ومع ذلك، لا أريد أن تمتد عبر منطقة النافذة بأكملها. بدلا من ذلك، يجب أن تغطي فقط دون إقليمية.

على سبيل المثال، توفر وفرة وظيفة لهذا السلوك. توفر أيضا أدوات الأدوات الرئيسية أيضا GTK + أو كيو تي عن واجب GL، والتي ليست سوى دون إقليمية من x Windows. ومع ذلك أحتاج إلى العمل منخفض المستوى.

يقبل glxmakeCurrent () المعرف X القابل للشرح. هل من الممكن تحديد القابل للشرح بأنه دون إقليمية من النافذة؟ أم أن هناك طرق أخرى لربط السياق إلى منطقة النافذة؟

مرجع GLX (الكتاب الأزرق)

تحرير: أضيفت Bounty رهيبة!

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

المحلول 2

لقد وجدت هذه القطعة مفيدة في BSD manpage.:

في كل عام تقريبا، يكون ذلك مهما بالنسبة لك، وهو رباعي يشبه نافذة المستوى الأعلى. لديها معرف نافذة؛ لديها مجموعة خاصة به من احتياطيات الحدث؛ يمكنك تقديمها؛ يتم إخطارك بإنشائها؛ ...

يعيش ضربة فرعية داخل نافذة أخرى (ربما نافذة المستوى الأعلى، وربما فرعية فرعية أخرى). لهذا السبب، فإنه يعمل بشكل عام فقط مع نوافذ أخرى من خلقك الخاص، وبالتالي لا يتعرض لمدير النافذة. هذا هو المصدر الرئيسي لفروقه من نافذة المستوى الأعلى:

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

نصائح أخرى

يمكنك فقط GlxmakeCurrent () A X قابل للتسريح، وليس أساسيا منه، ولكن الحل الخاص بك بسيط: توقف عن التفكير في نافذة X كما لو كان التطبيق الخاص بك. يتكون كل تطبيق X عادة من بين 10 أو 100 نوافذ X. قم بإنشاء نافذة تابعة في المنطقة التي تريدها ورسمها فيه.

بالتناوب، يمكنك إنشاء pixmap، وتقديمها إليها ثم انسخ إلى منطقة من النافذة، ولكن هذا سيكون أبطأ.

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