ما هو ImGui؟ شرح تفصيلي لـ Dear ImGui (2026)

ImGui (Dear ImGui) هي مكتبة واجهة مستخدم رسومية ذات وضع فوري لـ C++. ترسم القوائم في كل إطار دون شجرة عناصر مرسومة، وهي شائعة في أدوات الألعاب والعملاء الأصليين.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ImGui (Dear ImGui) هي مكتبة واجهة مستخدم رسومية صغيرة تعتمد على النمط الفوري لـ C++.
  • ترسم القائمة من جديد في كل إطار من خلال استدعاءات الدوال، دون الحاجة إلى شجرة عناصر واجهة المستخدم.
  • تفضلها التطبيقات والأدوات الأصلية لتراكبات منخفضة الكمون فوق مشهد ثلاثي الأبعاد.
  • إنها نمط C++؛ يستخدم تعديل Java Fabric خطافات واجهة المستخدم الخاصة باللعبة بدلاً من ذلك.

ImGui، واختصارًا لـ Dear ImGui، هي مكتبة واجهة مستخدم رسومية (GUI) صغيرة تعتمد على طريقة العرض الفورية، مصممة للغة C++. ترسم قائمة جديدة في كل إطار من خلال استدعاءات الدوال البسيطة بدلاً من الاحتفاظ بشجرة من كائنات الأدوات. وهذا يجعلها سريعة الإعداد وسهلة الإضافة فوق حلقة العرض الحالية للعبة، ولهذا السبب تستخدمها أدوات التطوير والتطبيقات الأصلية للتراكبات منخفضة الكمون.

أين Opal يناسب

Opal هو تعديل Fabric، لذا فهو يبني واجهته من خلال آليات واجهة المستخدم الخاصة باللعبة بدلاً من ImGui. إذا كنت ترغب في إضافة ميزات دون الحاجة إلى تعديل التعليمات البرمجية الأصلية، فإن محرك JavaScript للبرمجة النصية GraalVM هو المكان المناسب للبدء. راجع دليل الإعداد و دليل البرمجة النصية

ما المقصود بـ "الوضع الفوري"

يعيد ImGui بناء الواجهة في كل إطار. أنت لا تنشئ كائن زر وتخزينه. أنت تستدعي دالة تقول "ارسم زرًا هنا"، وتخبرك هذه المكالمة برسم الزر وإعلامك فيما إذا تم النقر عليه في هذا الإطار.

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

لماذا تختار الأدوات والعملاء هذا الأسلوب

ImGui شائع للقوائم التي تظهر فوق مشهد ثلاثي الأبعاد. الأسباب عملية.

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

الوضع الفوري مقابل الوضع المحتفظ

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

كيف يتناسب مع عميل أصلي

غالبًا ما يقوم عميل الأداة الأصلية المكتوب بلغة C++ برسم القائمة الخاصة به باستخدام ImGui فوق إطار اللعبة. يعمل رمز القائمة داخل حلقة العرض، ويقرأ إعدادات العميل الخاصة به، ويكتب التغييرات مباشرةً مرة أخرى. لا توجد عملية واجهة مستخدم منفصلة، لذا فإن تبديل ميزة هو استدعاء دالة واحدة مقابل قيمة يمتلكها العميل بالفعل.

هذا نمط C++. يمكن لـ Fabric المكتوب بلغة Java الوصول إلى واجهته من خلال خطافات واجهة المستخدم الخاصة باللعبة، لذلك يظهر ImGui بشكل أساسي في العملاء الذين يتم توزيعهم كتعليمات برمجية أصلية بدلاً من تعديلات Java.

الأسئلة الشائعة