(هذه المكتبة متاحة بموجب ترخيص مجاني ومسموح، ولكنها تحتاج إلى دعم مالي لمواصلة تحسيناتها. بالإضافة إلى الصيانة والاستقرار، هناك العديد من الميزات المرغوبة التي لم تتم إضافتها بعد. إذا كانت شركتك تستخدم عزيزي ImGui، فيرجى التفكير في التواصل معنا .)
الشركات: دعم التطوير المستمر والصيانة من خلال عقود الرعاية/الدعم المفوترة:
البريد الإلكتروني: الاتصال @ Dearimgui دوت كوم
الأفراد: دعم التطوير المستمر والصيانة هنا. راجع أيضًا صفحة التمويل.
العرض التقديمي - الاستخدام - كيفية العمل - الإصدارات وسجلات التغيير - العرض التوضيحي - البدء والتكامل |
---|
المعرض - الدعم، الأسئلة الشائعة - كيفية المساعدة - التمويل والجهات الراعية - الاعتمادات - الترخيص |
Wiki - الامتدادات - روابط اللغات وأطر العمل الخلفية - البرامج التي تستخدم عزيزي ImGui - اقتباسات المستخدم |
عزيزي ImGui هي مكتبة واجهة مستخدم رسومية خالية من الانتفاخ لـ C++ . فهو يقوم بإخراج مخازن مؤقتة محسنة يمكنك عرضها في أي وقت في تطبيقك الذي يدعم خطوط الأنابيب ثلاثية الأبعاد. إنه سريع، ومحمول، وعارض، ومكتفي بذاته (لا توجد تبعيات خارجية).
تم تصميم Dear ImGui لتمكين التكرارات السريعة وتمكين المبرمجين من إنشاء أدوات إنشاء المحتوى وأدوات التصور/تصحيح الأخطاء (على عكس واجهة المستخدم للمستخدم النهائي العادي). إنه يفضل البساطة والإنتاجية لتحقيق هذا الهدف ويفتقر إلى بعض الميزات الشائعة في المكتبات عالية المستوى. من بين أمور أخرى، لا يتم دعم التدويل الكامل (النص من اليمين إلى اليسار، والنص ثنائي الاتجاه، وتشكيل النص، وما إلى ذلك) وميزات إمكانية الوصول.
يعد Dear ImGui مناسبًا بشكل خاص للتكامل في محركات الألعاب (للأدوات)، أو التطبيقات ثلاثية الأبعاد في الوقت الفعلي، أو تطبيقات ملء الشاشة، أو التطبيقات المضمنة، أو أي تطبيقات على منصات وحدة التحكم حيث تكون ميزات نظام التشغيل غير قياسية.
جوهر عزيزي ImGui مكتفي بذاته ضمن عدد قليل من الملفات المحايدة للنظام الأساسي والتي يمكنك تجميعها بسهولة في التطبيق/المحرك الخاص بك. وهي جميع الملفات الموجودة في المجلد الجذر للمستودع (imgui*.cpp، imgui*.h). لا توجد عملية بناء محددة مطلوبة . يمكنك إضافة ملفات .cpp إلى مشروعك الحالي.
يتم توفير الواجهات الخلفية لمجموعة متنوعة من واجهات برمجة تطبيقات الرسومات ومنصات العرض في الواجهات الخلفية/المجلد، إلى جانب أمثلة التطبيقات في المجلد/الأمثلة. يمكنك أيضًا إنشاء الواجهة الخلفية الخاصة بك. في أي مكان حيث يمكنك عرض مثلثات مزخرفة، يمكنك عرض عزيزي ImGui.
راجع قسم البدء والتكامل في هذا المستند لمزيد من التفاصيل.
بعد إعداد Dear ImGui في تطبيقك، يمكنك استخدامه من _anywhere_ في حلقة البرنامج الخاصة بك:
ImGui::Text ( " Hello, world %d " , 123 );
if (ImGui::Button( " Save " ))
MySaveFunction ();
ImGui::InputText ( " string " , buf, IM_ARRAYSIZE(buf));
ImGui::SliderFloat ( " float " , &f, 0 . 0f , 1 . 0f );
// Create a window called "My First Tool", with a menu bar.
ImGui::Begin ( " My First Tool " , &my_tool_active, ImGuiWindowFlags_MenuBar);
if (ImGui::BeginMenuBar())
{
if ( ImGui::BeginMenu ( " File " ))
{
if ( ImGui::MenuItem ( " Open.. " , " Ctrl+O " )) { /* Do stuff */ }
if ( ImGui::MenuItem ( " Save " , " Ctrl+S " )) { /* Do stuff */ }
if ( ImGui::MenuItem ( " Close " , " Ctrl+W " )) { my_tool_active = false ; }
ImGui::EndMenu ();
}
ImGui::EndMenuBar ();
}
// Edit a color stored as 4 floats
ImGui::ColorEdit4 ( " Color " , my_color);
// Generate samples and plot them
float samples[ 100 ];
for ( int n = 0 ; n < 100 ; n++)
samples[n] = sinf(n * 0 . 2f + ImGui::GetTime() * 1 . 5f );
ImGui::PlotLines ( " Samples " , samples, 100 );
// Display contents in a scrolling region
ImGui::TextColored (ImVec4( 1 , 1 , 0 , 1 ), "Important Stuff");
ImGui::BeginChild ( " Scrolling " );
for ( int n = 0 ; n < 50 ; n++)
ImGui::Text ( " %04d: Some text " , n);
ImGui::EndChild ();
ImGui::End ();
عزيزي ImGui يسمح لك بإنشاء أدوات تفصيلية بالإضافة إلى أدوات قصيرة العمر. على الجانب الأقصى من قصر العمر: باستخدام ميزة التحرير والمتابعة (إعادة تحميل التعليمات البرمجية السريعة) للمترجمين الحديثين، يمكنك إضافة بعض الأدوات لتعديل المتغيرات أثناء تشغيل التطبيق الخاص بك، وإزالة التعليمات البرمجية بعد دقيقة واحدة! عزيزي ImGui ليس فقط لتعديل القيم. يمكنك استخدامه لتتبع خوارزمية قيد التشغيل بمجرد إصدار أوامر نصية. يمكنك استخدامه مع بيانات الانعكاس الخاصة بك لتصفح مجموعة البيانات الخاصة بك مباشرة. يمكنك استخدامه لكشف الأجزاء الداخلية للنظام الفرعي في المحرك الخاص بك، ولإنشاء مسجل، وأداة فحص، ومنشئ ملفات تعريف، ومصحح أخطاء، ومحرر/إطار عمل كامل لصنع الألعاب، وما إلى ذلك.
يحاول نموذج IMGUI من خلال واجهة برمجة التطبيقات (API) الخاصة به تقليل تكرار الحالة غير الضروري ومزامنة الحالة والاحتفاظ بالحالة من وجهة نظر المستخدم. إنها أقل عرضة للخطأ (رمز أقل وأخطاء أقل) من واجهات الوضع المحتجز التقليدية، وتصلح لإنشاء واجهات مستخدم ديناميكية. قم بمراجعة ويكي حول قسم نموذج IMGUI لمزيد من التفاصيل.
عزيزي ImGui يقوم بإخراج المخازن المؤقتة الرأسية وقوائم الأوامر التي يمكنك عرضها بسهولة في التطبيق الخاص بك. عدد استدعاءات السحب وتغييرات الحالة المطلوبة لتقديمها صغير إلى حد ما. نظرًا لأن عزيزي ImGui لا يعرف حالة الرسومات أو يلمسها مباشرةً، يمكنك استدعاء وظائفه في أي مكان في التعليمات البرمجية الخاصة بك (على سبيل المثال، في منتصف خوارزمية قيد التشغيل، أو في منتصف عملية العرض الخاصة بك). ارجع إلى نماذج التطبيقات الموجودة في الأمثلة/ المجلد للحصول على إرشادات حول كيفية دمج Dear ImGui مع قاعدة التعليمات البرمجية الموجودة لديك.
أحد سوء الفهم الشائع هو الخلط بين واجهة المستخدم الرسومية للوضع الفوري وعرض الوضع الفوري، وهو ما يعني عادةً ضرب برنامج التشغيل/وحدة معالجة الرسومات بمجموعة من مكالمات السحب غير الفعالة وتغييرات الحالة كما يتم استدعاء وظائف واجهة المستخدم الرسومية. هذا ليس ما يفعله عزيزي ImGui. عزيزي ImGui يقوم بإخراج المخازن المؤقتة الرأسية وقائمة صغيرة من دفعات مكالمات السحب. لا يمس وحدة معالجة الرسومات الخاصة بك مباشرة أبدًا. تعد دفعات مكالمات السحب مثالية تمامًا ويمكنك عرضها لاحقًا، في تطبيقك أو حتى عن بُعد.
راجع صفحة الإصدارات للتعرف على سجلات التغيير المزخرفة. تعد قراءة سجلات التغيير طريقة جيدة للبقاء على اطلاع دائم بالأشياء التي يقدمها عزيزي ImGui، وربما ستعطيك أفكارًا حول بعض الميزات التي كنت تتجاهلها حتى الآن!
سيؤدي استدعاء الدالة ImGui::ShowDemoWindow()
إلى إنشاء نافذة تجريبية تعرض مجموعة متنوعة من الميزات والأمثلة. الكود متاح دائمًا للرجوع إليه في imgui_demo.cpp
. وإليك كيف يبدو العرض التوضيحي.
يجب أن تكون قادرًا على بناء الأمثلة من المصادر. إذا لم تقم بذلك، اسمحوا لنا أن نعرف! إذا كنت تريد إلقاء نظرة سريعة على بعض ميزات Dear ImGui، فيمكنك تنزيل ثنائيات Windows للتطبيق التجريبي هنا:
التطبيقات التجريبية ليست على دراية بـ DPI، لذا توقع بعض التشويش على شاشة 4K. للتعرف على DPI في تطبيقك، يمكنك تحميل/إعادة تحميل الخط الخاص بك بمقياس مختلف وتغيير حجم النمط الخاص بك باستخدام style.ScaleAllSizes()
(راجع الأسئلة الشائعة).
راجع دليل البدء للحصول على التفاصيل.
في معظم الأنظمة الأساسية وعند استخدام C++، يجب أن تكون قادرًا على استخدام مجموعة من الواجهات الخلفية imgui_impl_xxxx دون تعديل (على سبيل المثال، imgui_impl_win32.cpp
+ imgui_impl_dx11.cpp
). إذا كان المحرك الخاص بك يدعم أنظمة أساسية متعددة، ففكر في استخدام المزيد من ملفات imgui_impl_xxxx بدلاً من إعادة كتابتها: سيقلل ذلك من العمل بالنسبة لك، ويمكنك تشغيل عزيزي ImGui على الفور. يمكنك لاحقًا أن تقرر إعادة كتابة واجهة خلفية مخصصة باستخدام وظائف المحرك المخصصة إذا كنت ترغب في ذلك.
إن دمج عزيزي ImGui في المحرك المخصص الخاص بك هو مسألة 1) توصيل مدخلات الماوس/لوحة المفاتيح/لوحة الألعاب 2) تحميل مادة إلى محرك معالجة الرسومات/العرض الخاص بك 3) توفير وظيفة عرض يمكنها ربط الأنسجة وتقديم مثلثات مزخرفة، وهو في الأساس ما الواجهات الخلفية تفعل. يتم ملء المجلد/الأمثلة بالتطبيقات التي تقوم بذلك: إعداد نافذة واستخدام الواجهات الخلفية. إذا اتبعت دليل البدء، فمن المفترض نظريًا أن يستغرق الأمر أقل من ساعة لدمج عزيزي ImGui. تأكد من قضاء بعض الوقت في قراءة الأسئلة الشائعة والتعليقات وتطبيقات الأمثلة!
الواجهات الخلفية/الارتباطات التي تم الحفاظ عليها رسميًا (في المستودع):
صفحة wiki للواجهات الخلفية/الارتباطات التابعة لجهات خارجية:
صفحة wiki للإضافات/الأدوات المفيدة:
انظر أيضًا Wiki لمزيد من الروابط والأفكار.
أمثلة على المشاريع التي تستخدم Dear ImGui: Tracy (ملف التعريف)، وImHex (محرر سداسي عشري/تحليل البيانات)، وRemedyBG (مصحح الأخطاء) ومئات من المشاريع الأخرى.
لمزيد من لقطات الشاشة التي أرسلها المستخدم للمشاريع باستخدام عزيزي ImGui، قم بمراجعة مواضيع المعرض!
للحصول على قائمة بأدوات وإضافات الطرف الثالث، قم بمراجعة صفحة wiki للملحقات/الأدوات المفيدة.
محرك مخصص erhe (فرع الإرساء) | محرك مخصص لـ Wonder Boy: The Dragon's Trap (2017) |
محرك مخصص (بدون عنوان) | تريسي ملف التعريف (جيثب) |
راجع: الأسئلة المتداولة (FAQ) حيث تتم الإجابة على الأسئلة الشائعة.
راجع: البدء وWiki للعديد من الروابط والمراجع والمقالات.
راجع: مقالات حول نموذج IMGUI لقراءة/التعرف على نموذج واجهة المستخدم الرسومية للوضع الفوري.
انظر: التغييرات القادمة.
انظر: عزيزي محرك اختبار ImGui + مجموعة الاختبار للأتمتة والاختبار.
لأغراض جعل محركات البحث تزحف إلى موقع wiki، إليك رابط إلى موقع Wiki القابل للزحف (ليس للبشر، هذا هو السبب).
ابدء؟ بالنسبة للمستخدمين لأول مرة الذين يواجهون مشكلات في التجميع/الربط/التشغيل أو مشكلات في تحميل الخطوط، يرجى استخدام مناقشات GitHub. بالنسبة لأية أسئلة أخرى، وتقارير الأخطاء، والطلبات، والتعليقات، يرجى النشر على مشكلات GitHub. يرجى قراءة وملء نموذج العدد الجديد بعناية.
يتوفر الدعم الخاص لعملاء الأعمال الذين يدفعون (البريد الإلكتروني: contact@ Dearimgui dot com ).
ما هو الإصدار الذي يجب أن أحصل عليه؟
نقوم أحيانًا بوضع علامة على الإصدارات (مع ملاحظات إصدارات لطيفة) ولكنها آمنة بشكل عام ويوصى بمزامنتها مع أحدث فرع master
أو فرع docking
. المكتبة مستقرة إلى حد ما وتميل إلى إصلاح الانحدارات بسرعة عند الإبلاغ عنها. قد يرغب المستخدمون المتقدمون في استخدام فرع docking
مع ميزات Multi-Viewport وDocking. يتم الاحتفاظ بهذا الفرع متزامنًا مع الفرع الرئيسي بانتظام.
من يستخدم عزيزي ImGui؟
راجع عروض الأسعار والتمويل والجهات الراعية والبرامج التي تستخدم صفحات Dear ImGui Wiki للحصول على فكرة حول من يستخدم Dear ImGui. الرجاء إضافة اللعبة/البرنامج الخاص بك إذا استطعت! راجع أيضًا مواضيع المعرض!
كيف يمكنني المساعدة؟
التطوير المستمر عزيزي ImGui يتم دعمه ماليًا من قبل المستخدمين والجهات الراعية الخاصة.
يرجى الاطلاع على القائمة التفصيلية للداعمين والرعاة الحاليين والسابقين لتمويل Dear ImGui للحصول على التفاصيل.
من نوفمبر 2014 إلى ديسمبر 2019، تم أيضًا دعم التطوير المستمر ماليًا من قبل مستخدميه على Patreon ومن خلال التبرعات الفردية.
شكرًا لجميع الداعمين السابقين والحاليين للمساعدة في إبقاء هذا المشروع حيًا ومزدهرًا!
يستخدم عزيزي ImGui البرامج والخدمات المقدمة مجانًا للمشاريع مفتوحة المصدر:
تم تطويره بواسطة عمر كورنوت وكل المساهمين المباشرين أو غير المباشرين في GitHub. تم تطوير الإصدار الأول من هذه المكتبة بدعم من Media Molecule وتم استخدامه لأول مرة داخليًا في لعبة Tearaway (PS Vita).
من بين المساهمين المتكررين Rokas Kupstys @rokups (2020-2022): جزء كبير من العمل على نظام التشغيل الآلي واختبارات الانحدار متاح الآن في محرك اختبار Dear ImGui.
تتم استضافة عقود الصيانة/الدعم وفواتير الرعاية والمعاملات الأخرى بين الشركات (B2B) والتعامل معها بواسطة Disco Hello.
عمر: "لقد اكتشفت نموذج IMGUI لأول مرة في Q-Games حيث قام Atman Binstock بإسقاط تطبيقه البسيط في قاعدة التعليمات البرمجية، والذي قضيت بعض الوقت في تحسينه والتفكير فيه. وتبين أن Atman تعرض للمفهوم مباشرة من خلال العمل مع Casey عندما انتقلت إلى Media Molecule، قمت بإعادة كتابة مكتبة جديدة محاولًا التغلب على عيوب المكتبة الأولى التي عملت معها وأصبحت هذه المكتبة ومنذ ذلك الحين أمضيت وقتًا غير معقول تكرارها وتحسينها."
يدمج الخط ProggyClean.ttf بواسطة Tristan Grimmer (ترخيص MIT).
تضمين stb_textedit.h، stb_truetype.h، stb_rect_pack.h بواسطة Sean Barrett (المجال العام).
الإلهام والتعليقات والاختبار للإصدارات المبكرة: كيسي موراتوري، أتمان بينستوك، ميكو مونونين، إيمانويل بريني، ستيفان كامودا، أنطون ميخائيلوف، مات ويليس. شكرًا أيضًا لكل من ينشر التعليقات والأسئلة والتصحيحات على GitHub.
عزيزي ImGui مرخص بموجب ترخيص MIT، راجع LICENSE.txt لمزيد من المعلومات.