- NanoVG هي مكتبة رسوميات متجهية ثنائية الأبعاد صغيرة الحجم، مُنعّمة الحواف، لـ OpenGL، مكتوبة بلغة C.
- ترسم الأشكال والنصوص والتدرجات من المسارات، مع حواف ناعمة بأي حجم.
- تصل تطبيقات Minecraft إليها من خلال روابط LWJGL لرسم واجهات المستخدم والقوائم.
- الرسم المتجهي يتفوق في واجهات المستخدم القابلة لتغيير الحجم؛ الصور النقطية لا تزال تتفوق في الأعمال الفنية الثابتة.
NanoVG هي مكتبة رسومات متجهة صغيرة مضادة للتشويش لـ OpenGL، مكتوبة بلغة C. ترسم أشكالًا ثنائية الأبعاد ونصوصًا وتدرجات ذات حواف ناعمة من خلال واجهة برمجة تطبيقات واحدة مضغوطة. في عميل Minecraft، يتم الوصول إليها من خلال ربط LWJGL، بحيث يمكن لتعليمات Java البرمجية رسم واجهات مستخدم وقوائم واضحة فوق اللعبة.
أين Opal يناسب
Opal هو تعديل Fabric يضع واجهة خاصة به فوق اللعبة. إذا أردت إضافة ميزات خاصة بك، يوضح دليل البرمجة النصية كيفية فعل ذلك باستخدام JavaScript
ما الذي يفعله NanoVG
يرسم NanoVG رسومات متجهة ثنائية الأبعاد على وحدة معالجة الرسومات (GPU) عبر OpenGL. تصف الأشكال باستخدام مسارات (خطوط ومنحنيات ومستطيلات ودائرة)، ثم تملأها أو تحدد حدودها. تتعامل المكتبة مع التنعيم (antialiasing)، بحيث تظل الحواف سلسة بأي حجم بدلاً من أن تصبح متقطعة كما هو الحال في خريطة بتية ممدودة.
تم تصميمها لتكون صغيرة عن قصد. المكتبة بأكملها عبارة عن ملف C واحد مع واجهة برمجة تطبيقات (API) مركزة، وهذا هو أحد الأسباب التي تجعلها تظهر في عروض الرسومات وطبقات واجهة المستخدم الخفيفة بدلاً من التعليمات البرمجية الثقيلة للمحركات.
لماذا يستخدم عميل Minecraft ذلك
يرسم العميل واجهة خاصة به فوق Minecraft: قوائم، وقوائم، ومؤشرات الأشكال، وعناصر HUD مخصصة. يمنح NanoVG تلك الواجهة طريقة نظيفة لرسم أشكال متجهة ونص يتناسب مع أي دقة دون أن يبدو متعرجًا.
نظرًا لأن العرض يعتمد على المسارات، يمكن للمطور إنشاء لوحات مستديرة وتدرجات ومخططات من العناصر الأولية بدلاً من الصور المخبوزة مسبقًا. هذا يحافظ على المظهر متسقًا عبر مقاييس واجهة المستخدم وأحجام العرض.
NanoVG و LWJGL
يعمل Minecraft وتعديلاته على JVM، لكن NanoVG هي مكتبة C. LWJGL يردم الفجوة. إنه يوفر ارتباطات Java بمكتبات أصلية مثل NanoVG و OpenGL، بحيث يمكن لتعليمات Java البرمجية استدعاء الوظائف الأصلية مباشرة.
يربط العميل بوحدة LWJGL NanoVG، ويفتح سياق رسم، ويصدر استدعاءات المسار والطلاء داخل حلقة العرض الخاصة باللعبة. يقوم الجانب الأصلي بعمل التظليل الفعلي على وحدة معالجة الرسومات (GPU).
NanoVG مقابل الرسم بالصور النقطية
| الجانب | NanoVG (متجه) | الصور النقطية |
|---|---|---|
| الحواف | مُنعّمة الحواف بأي حجم | ضبابية أو تشويه عند تغيير الحجم |
| الأشكال | مُنشأة من المسارات في وقت التشغيل | أصول صور جاهزة |
| الذاكرة | خفيف، لا توجد نصوص كبيرة | يزداد مع عدد الصور |
| الأفضل لـ | واجهات المستخدم، الأشكال، النصوص الديناميكية | الصور، الأعمال الفنية الثابتة، الرموز |
يفوز الرسم المتجه لعناصر الواجهة التي تتغير الحجم أو اللون. لا تزال الصور النقطية تفوز بالأعمال الفنية التفصيلية الثابتة.
الأسئلة الشائعة
لا. نانوڤي جي (NanoVG) هي مكتبة رسوميات C عامة لـ OpenGL. إنها ليست خاصة بـ Minecraft. يقوم العميل بتضمينها عبر LWJGL لرسم واجهته الخاصة
تستخدم برامج C.Java ذلك من خلال ربط أصلي مثل تلك التي توفرها LWJGL، بدلاً من استدعاء كود C يدويًا
لا. إنه يرسم تراكبات ثنائية الأبعاد: واجهات المستخدم، والقوائم، والأشكال، والنصوص. يتم عرض عالم اللعبة نفسه بواسطة محرك Minecraft الخاص
تتداخل الصور أو تتشوه عند تغيير حجمها، وتستهلك كل منها ذاكرة. يبني NanoVG الأشكال من الرياضيات، لذا تظل واضحة في أي حجم واجهة مستخدم وتكلف القليل