عادةً ، لا تتطلب أدوات العمل المساعدة وجود واجهة مستخدم عاقلة ، مع الأزرار والقوائم والنوافذ ودعم الماوس وغيرها من الأشياء الصغيرة ، ويمكن حزم معظم قائمة الأمنيات العاملة في البرامج النصية وتشغيلها في بعض الأحيان باستخدام المعلمة --help ، وسيكون هذا الأمر أكثر صحة من وجهة نظر التكوين و التحجيم. كل شيء يزداد سوءًا عندما لا يبدأ فريق التطوير فحسب ، بل يبدأ أيضًا طرف ثالث في استخدام الأدوات. وليسوا مستعدين دائمًا للتعمق في الأفكار المتناغمة الواردة في سطور الكود. ثم يتعين عليك إثارة ضجة في واجهة المستخدم ، وعادة ما يحصل المطورون عليها بسيطة ومربعة وعملية ومملة تمامًا. منذ بعض الوقت ، كنت أعمل على نظام صغير للتحكم في التهوية / التدفئة / الكاميرا وأيضًا "ما سيأتي به العم الذي يرتدي خوذة صفراء" في موقف للسيارات تحت الأرض.
(هنا كانت صورة من نظام واجهة المستخدم ، لكن المطور طلب إزالتها. إذا كنت لا تريد أن تقرأ عن السير في حقل أشعل النار ، فقم بروابط إلى جيثب في نهاية المقالة)
تم بناء النظام على شركة نفط الجنوب الصينية التي لا تحمل اسمًا ، والتي قررت الشركة المصنعة من خلالها تحويل إطار عمل SDL الخاص بالإصدار الأول. تم الانتهاء من الأدوات والبرامج النصية الداخلية إلى حد أنها تحولت إلى تصميم ثقل و "جميل" مع علامات التبويب والقوائم والنوافذ المنبثقة والظلال والتدرج والشفافية وغيرها من الأشياء الجيدة.
لتحقيق كل الجمال ، تم اختيار nanogui وبسيطة وبسيطة ، وفي الوقت نفسه "قوي" كل ما هو مطلوب. كان بالضبط على الورق ، ولكن
الوديان نسيت برنامج OpenGL. بدأت أنظمة التحكم في واجهة المستخدم المنفذة بالكامل تقريبًا تعمل على الأجهزة ، وهناك شاشة سوداء ، جميع عمليات تهيئة OpenGL3 تمر دون أخطاء ، يتم تعيين المخازن المؤقتة ، ويتم تجميع التظليل ، ولكن لا ... شاشة سوداء ، في أي زاوية لا تبدو.
في البداية ، أخطأوا على يدي الملتوية ، ثم على يدي مطور أنتوخا المسؤول عن برنامج التشغيل والأجهزة ، ثم أطلقوا مثالاً تجريبيًا لمثلث يتم عرضه من SoC SDK ، ومرة أخرى ، عادةً ما تتم قراءة الشاشة السوداء والمستندات والأمثلة في آخر الأمر.
اعتقدت أنا وزميلي شيئًا ما خاطئًا وذهبت أولاً إلى المنتدى الصيني ، ولم أجد بالفعل إجابات واضحة للمطور ، كانت الإجابة مخيبة للآمال ، ولم يكن هناك أي تطبيق مفتوح ، وعلى الأرجح لن يحدث ذلك ، لأنه تم إيقاف الخط.
- ولكن ماذا عن إطار SDL؟ - سألنا
- نحن نوجه بكسل بكسل في ذاكرة الفيديو. - أجاب أصدقاؤنا الصينيون.
في ذلك اليوم رأيت العيون الحزينة للمبرمج الذي يحسب مقدار خطاب الاعتماد الذي سيرسله إلى / dev / null. لكن طرح حل جاهز كان مخيباً للآمال للغاية ،
(على الإنترنت يوجد كل شيء) اتضح أنه يمكنك العيش بدون OpenGL في nanogui على عرض البرنامج.
الحياة فقط تتحول ببطء شديد ، على جهاز كمبيوتر كبير بضع ثوان لكل إطار ، في معجزة الهندسة الصينية ، هو بالفعل حوالي 20-25 ثانية لرسم. ثم قرروا عدم تقديم واجهة المستخدم بأكملها في وقت واحد ، ولكن فقط الأجزاء الضرورية (المتغيرة) من عناصر واجهة المستخدم ، ولكن حتى في هذا الوضع ، مع كل الاختراقات والتحسينات ، استغرق الأمر أكثر من 10 ثوانٍ لكل إطار ، غير قابل للتطبيق ...
بعد أن قمت بتدخين بعض أمثلة SDK ، اكتشفنا أن نسخ القوام الجاهزة إلى ذاكرة الفيديو "فوري" (مقارنة بـ 10 ثوانٍ بالطبع) ، ويستغرق الأمر حوالي دقيقة واحدة إلى 512 × 512 دون شفافية و 2 مللي ثانية لنفسه بشفافية ، إذا قمت بنسخ العديد من هذه القوام واحدة تلو الأخرى ، ثم ينمو الوقت بشكل كارثي غير خطي ، اتضح أن هذا يرجع إلى الكمية المحدودة من ذاكرة التخزين المؤقت لذاكرة الفيديو ، مما أدى إلى تجاوز سعة المخزن المؤقت وعرض ما كان موجودًا على الشاشة (وليس لي ، لقد كان موجودًا بالفعل) ، أي بالنسبة للواجهة غير الميتة ، لا يمكننا نسخ أكثر من 50 إلى 100 مادة لكل إطار وليس فورًا ، ولكن فقط بعد انتظار برنامج تشغيل الفيديو لجمع البيانات من المخزن المؤقت.
كان التكرار التالي هو تقديم القطعة إلى نسيجها الخاص في الدفق ، وفي الوقت الذي تم فيه إنشاء الملمس ، تم رسم القطعة مشابهة تقريبًا للنتيجة النهائية ، فقط بطريقة مربعة ، لرسم جميع أنواع الخطوط ، يمكن أن تكون الأشكال في ذاكرة الفيديو مجانًا.
تقريبًا من التغلب على معجزة الفكر الصيني "بدون" وحدة معالجة الرسومات ، لا يزال لا يمكنك استدعاء 20 إطارًا في الثانية نتيجة لائقة ، وبعد الانتهاء تقريبًا من المشروع ، طلبت من العميل الحصول على إذن لالتقاط بعض الخبرة في المصادر المفتوحة. لا تعد SDL الأولى من المألوف الآن ، لذا فقد تقرر استخدام nanogui render في وضع البرنامج على SDL2 ووضعه على github. ربما سيحتاج شخص :)
بعد قراءة المقالة حتى النهاية ، يحق لـ٪ habruiser٪ السؤال عن سبب ضرورة حظر هذه المجموعة من التعليمات البرمجية
لالزوايا وظلال مدورة؟ أولاً ، إنه جميل (ق) ، وثانيًا ، "ذلك العم الذي يرتدي خوذة صفراء" والذي دفع بالفعل مقابل تطوير النظام والزوايا الدائرية هناك ، لسوء الحظ (أو لحسن الحظ) انتهى به الأمر في قائمة المهام ، يظل من الضروري جعلهم بتدرج وإضافة بعض الظلال.
كان هذا هو صيف 2017 الأصلي في سوتشي المشمسة.
هذه هي الطريقة التي يعرضها برنامج OpenGLهذه هي الطريقة التي يتم بها عرض البرنامج على جهاز الكمبيوترالمراجعwjakob الأصلي / nanoguiتقديم برنامج NanoVGتقديم برنامج NanoGUI + SDL +ملاحظة: لا تصدق المطورين
الصينيين يتحدثون عن وجود OpenGL في النظام ، والتحقق من أداء جميع المكونات ، لمعرفة كيف :)