LVG(獅子矢量圖形)
LVG是輕量級的閃光播放器更換。基本思想:包裹中有一些資產和sctipts可以使它們產生。它旨在將非常小的運行時(大約200kb無視頻編解碼器)用於播放器,並在Android,iOS,Web等上運行。
當前,它使用C腳本加載和渲染資產。為什麼要C腳本?因為C編譯器很小,並且在C中編寫的運行時,因此不需要其他語言,並且可以將腳本編譯到保存空間中。另一個原因是兼容性:LVG僅揭露小的API和OpenGL,而在其他腳本Laguages中,我們必須從頭開始所有工作,包括GUI。但是有大量已經寫的C代碼。通常作者更喜歡C ++,但也有一些理由將純C用於整個項目:
- 我們不需要為Android共享對象包含LIBSTDC ++,從而節省了一些.APK空間(共享對象libs通常也為.apk中的每個受支持的架構進行複制)。
- 這降低了Emscripten的大小編譯了WASM代碼(已經相對較重)。
- 本機C ++也需要對小型代碼進行一些關注。絕對可以使用C ++編寫小型代碼,但是我們需要每個平台/編譯器之類的MiniCRT。例如,請參見Farbrauch代碼或類似的代碼。
- C ++代碼會產生更多嘈雜的.MAP文件,從而使配置文件/地圖文件分析更複雜。諸如Chromium之類的項目還使用對象分析工具(例如Dump-Initializers.py),此類工具也有更少的噪音。
- 代碼可以更輕鬆地移植到特定的OS'E。
當前支持的以下資產:
- SVG矢量圖像(使用NanoSVG加載)
- 柵格圖像(使用stb_image.h加載)
- mp3文件(使用minimp3加載)
- Flash SWF文件(可以包含向量,柵格,視頻和音頻)。所有SWF視頻編解碼器(H263,VP6,FlashSV,FlashSV2,H264)的價格額外〜600KB。
- 使用TCC或PICOC的腳本
可以使用以下後端完成渲染:
當前狀態
作品:
- SVG,圖像,帶有TCC腳本的MP3資源。
- SWF:形狀,圖像,視頻,音頻(MP3,ADPCM,PCM),有限的動作腳本2支持,有限的變形形狀支持。
行不通:
- SWF:夾層
- SWF:解釋動作腳本3
- SWF:位圖過濾器
- SWF:網絡訪問
演示
基本SVG演示(可單擊的圖像):

Nanovg演示在LVG中均不復存在:

Nuklear Gui演示:

Flash SWF演示:

建築
現在,Windows可執行文件僅在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配置為使用不同的後端用於平台,音頻和視頻。您可以通過在build Directory中執行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。
- 使用Sljit這樣的JIT加快動作腳本。
- 著色器和3D支持。
- 並行形狀圖像解碼並使用並行解碼支持(例如PBZIP2)的文件壓縮。
- 更多音頻 Video 編解碼器後端。
SWF框架插值獲得比文件中編碼更多的FPS。 [完畢]- 使用基於ANS的Draco樣壓縮比SWF存儲格式更好。
有趣的圖形庫
- 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.adobe.com/content/dam/acom/acom/en/devnet/pdf/pdf/swf-file-format-spec.pdf
- AMF V0推薦https://wwwimages2.adobe.com/content/dam/acom/acom/en/devnet/pdf/amf0-file-format-specification.pdf
- AMF V3參考https://wwwimages2.adobe.com/content/dam/acom/acom/en/devnet/pdf/amf-file-format-spec.pdf
- AS2參考http://homepage.divms.uiowa.edu/~slonnegr/flash/actionscript2Reference.pdf
LVG由https://github.com/lieff開發和維護