LVG (رسومات متجه الأسد)
LVG هو بديل لاعب فلاش خفيف الوزن. الفكرة الأساسية: لدينا بعض الأصول في حزمة و sctipts التي تجعلها. تم تصميمه لاستخدام وقت تشغيل صغير جدًا (حوالي 200 كيلو بايت بدون برامج ترميز الفيديو) للمشغل ويعمل على نظام Android و iOS و Web والمزيد.
حاليًا يستخدم البرنامج النصي C لتحميل الأصول وتقديمها. لماذا C السيناريو؟ نظرًا لأن برنامج التحويل البرمجي C صغير ، ووقت التشغيل مكتوبًا في C ، لذلك لا يلزم وجود لغة أخرى ويمكن تجميع البرنامج النصي في حفظ المساحة. سبب آخر هو التوافق: LVG تعرض فقط واجهة برمجة التطبيقات الصغيرة و OpenGL ، مع وجود Laguages البرمجة الأخرى التي يجب أن نفعلها كلها من نقطة الصفر ، بما في ذلك واجهة المستخدم الرسومية. ولكن هناك قدر كبير من رمز C المكتوب بالفعل. عادةً ما يفضل المؤلف C ++ ، ولكن هناك أيضًا بعض الأسباب لاستخدام Pure C للمشروع بالكامل:
- لا نحتاج إلى تضمين libstdc ++ للكائنات المشتركة التي تعمل بنظام Android ، والتي توفر بعض مساحة .APK (الكائنات المشتركة LIBs عادةً ما تكون مكررة لكل مهندس معماري مدعوم في .APK).
- هذا يقلل من حجم رمز WASM المترجم emscripten (إنه بالفعل ثقيل نسبيًا).
- يحتاج C ++ الأصلي إلى بعض الاهتمام للرمز الصغير أيضًا. من الممكن بالتأكيد كتابة رمز صغير باستخدام C ++ ، لكننا نحتاج إلى شيء مثل minicrt لكل منصة/مترجم. انظر رمز Farbrauch على سبيل المثال أو شيء مشابه.
- ينتج رمز C ++ أكثر بكثير من ملفات .MAP التي تجعل تحليل ملف التعريف/الخريطة أكثر تعقيدًا. تستخدم مشاريع مثل Chromium أيضًا أدوات تحليل الكائنات (مثل Dump-Static-Initializers.py) ، هناك أيضًا ضوضاء أقل مع هذه الأدوات.
- يمكن نقل التعليمات البرمجية إلى OS'es محددة بسهولة أكبر.
الأصول التالية المدعومة حاليًا:
- صور ناقلات SVG (محملة باستخدام NanOSVG)
- صور نقطية (تم تحميلها باستخدام stb_image.h)
- ملفات mp3 (محملة باستخدام minimp3)
- Flash SWF Files (يمكن أن تحتوي على المتجه والنقطية والفيديو والصوت). يكلف جميع برامج ترميز الفيديو SWF (H263 ، VP6 ، Flassv ، Flassv2 ، H264) ~ 600 كيلو بايت.
- البرامج النصية باستخدام TCC أو PICOC
يمكن إجراء العرض باستخدام الخلفية التالية:
الوضع الحالي
الأعمال:
- SVG ، الصورة ، موارد MP3 مع البرمجة النصية TCC.
- SWF: الأشكال ، الصور ، الفيديو ، الصوت (MP3 ، ADPCM ، PCM) ، دعم محدود النصي 2 ، دعم أشكال Morph محدودة.
لا تعمل:
- SWF: طبقات مقطع
- SWF: تفسير البرنامج النصي 3
- SWF: مرشحات صورة نقطية
- SWF: الوصول إلى الشبكة
العروض التوضيحية
عرض SVG الأساسي (الصور القابلة للنقر):

عرض Nanovg Instrated في LVG:

Nuklear Gui Demo:

Flash SWF Demo:

مبنى
في الوقت الحالي ، يبني Windows Executables فقط على مضيف Linux باستخدام MingW. لتثبيت Windows و Linux جميع تبعيات البناء مع الأمر التالي:
apt-get install -qq -y git cmake meson yasm libglfw3-dev libsdl2-dev libavcodec-dev mingw-w64 wget
يجب تثبيت Macos Brew:
brew install meson upx glfw sdl2 ffmpeg tcc
تستخدم LVG Meson كنظام بناء. المبنى الفعلي مع الأوامر التالية في دليل المشروع:
mkdir build
cd build
meson ..
ninja
تكوين
يمكن تكوين LVG لاستخدام الخلفية المختلفة للنظام الأساسي والصوت والفيديو. يمكنك رؤية التكوين الحالي عن طريق تنفيذ MesonConf (أو تكوين Meson لإصدارات Meson الأحدث) في دليل الإنشاء:
meson configure
...
Project options:
Option Description Current Value Possible Values
------ ----------- ------------- ---------------
AUDIO_SDL AUDIO_SDL true [True, False]
ENABLE_AUDIO ENABLE_AUDIO true [True, False]
ENABLE_SCRIPT ENABLE_SCRIPT true [True, False]
ENABLE_VIDEO ENABLE_VIDEO true [True, False]
PLATFORM_GLFW PLATFORM_GLFW true [True, False]
PLATFORM_SDL PLATFORM_SDL false [True, False]
RENDER_NANOVG RENDER_NANOVG true [True, False]
RENDER_NVPR RENDER_NVPR true [True, False]
SCRIPT_TCC SCRIPT_TCC true [True, False]
VIDEO_FFMPEG VIDEO_FFMPEG true [True, False]
...
يمكنك تغيير التكوين باستخدام أوامر Meson. مثال:
mesonconf -DENABLE_SCRIPT=False
مستقبل
- استخدم الممرات البرمجية الأخرى مثل Luajit و Jerryscript و Mujs و Mu و Avian و Impalajit و Mochascript و Angelscript.
- تسريع البرنامج النصي الإجراء مع JIT مثل SLJIT.
- التظليل ودعم ثلاثي الأبعاد.
- الشكل الموازي فك تشفير الصورة واستخدام ضغط الملف مع دعم فك التشفير المتوازي (مثل PBZIP2).
- المزيد من الصوت video برامج الترميز الخلفية.
استيفاء إطار SWF للحصول على مزيد من FPS أكثر من الترميز في الملف. [منتهي]- أفضل من تنسيق تخزين SWF باستخدام ضغط يشبه draco على أساس الإجابة.
مكتبات رسومات مثيرة للاهتمام
- https://github.com/01org/fastuidraw
- https://skia.org/
- https://github.com/blend2d/blend2d/
- https://github.com/memononen/nanovg
- https://github.com/mokafolio/tarp
- https://github.com/jpbruyere/vkvg
- https://github.com/jdryg/vg-renderer
- https://github.com/nical/lyon
- https://cairographics.org/
- http://www.antigrain.com/
- http://scripts.sil.org/cms/scripts/page.php؟site_id=projects&iTem_id=graphite_home
- https://sourceforge.net/projects/shivavg/
- https://github.com/micahpearlman/monkvg
- https://github.com/khronosgroup/openvg-registry
مشاريع ذات صلة فلاش
- https://github.com/lightspark/lightspark
- https://github.com/mozilla/shumway
- https://github.com/ruffle-rs/ruffle
- https://www.gnu.org/software/gnash/
- https://swfdec.freedesktop.org/wiki/
- https://github.com/marmalade/gameswf
- http://tulrich.com/geekstuff/gameswf.html
- http://www.swftools.org/
- http://www.libming.org/
- http://www.swift-tools.net/flash/
- https://github.com/crossbridge-community/crossbridge
- SWF V19 مرجع https://wwwimages2
- AMF V0 الإحالة https://wwwimages2
- AMF V3 Reference https://wwwimages2
- AS2 مرجع http://homepage.divms.uiowa.edu/~slonneg/flash/actionscript2reference.pdf
تم تطوير وصيانة LVG بواسطة https://github.com/lieff