LVG(ライオンベクターグラフィックス)
LVGは、軽量フラッシュプレーヤーの交換品です。基本的なアイデア:パッケージにいくつかの資産とそれらをレンダリングするsctiptがあります。 Android、iOS、Webなどで非常に小さなランタイム(ビデオコーデックなしで約200kb)を使用するように設計されています。
現在、Cスクリプトを使用して資産をロードおよびレンダリングしています。なぜCスクリプト? Cコンパイラは小さいため、cで書かれたランタイムは他の言語は必要ありません。スクリプトをコンパイルしてスペースを節約できます。もう1つの理由は互換性があることです。LVGは小さなAPIとOpenGLのみを公開し、GUIを含む他のスクリプトラガージですべてをゼロから行う必要があります。しかし、すでに書かれたCコードは膨大です。通常、著者はC ++を好みますが、プロジェクト全体に純粋なCを使用する理由もいくつかあります。
- Android共有オブジェクトにlibstdc ++を含める必要はありません。これにより、.apkスペースを保存します(共有オブジェクトLIBは、通常、サポートされているArchitectueの各Architectueについて複製されます)。
- これにより、EmscriptenコンパイルされたWASMコードのサイズが削減されます(すでに比較的重いです)。
- ネイティブC ++ビルドは、小さなコードにもある程度の注意が必要です。 C ++で小さなコードを書くことは間違いなく可能ですが、各プラットフォーム/コンパイラにMinicRTのようなものが必要です。たとえば、Farbrauchコードなどを参照してください。
- C ++コードは、プロファイル/マップファイル分析をもう少し複雑にするはるかにノイズの多い.MAPファイルを生成します。 Chromiumのようなプロジェクトは、オブジェクト分析ツール(Dump-Static Initializers.pyなど)も使用していますが、そのようなツールでもノイズが少なくなります。
- コードは、特定のos'をより簡単に移植できます。
現在サポートされているアセットに従ってください:
- SVGベクトル画像(NANOSVGを使用してロード)
- ラスター画像(stb_image.hを使用してロード)
- mp3ファイル(最小p3を使用してロード)
- Flash SWFファイル(ベクトル、ラスター、ビデオ、オーディオを含めることができます)。すべてのSWFビデオコーデック(H263、VP6、FlashSV、FlashSV2、H264)は追加〜600kbです。
- TCCまたはPICOCを使用したスクリプト
レンダリングは、次のバックエンドを使用して実行できます。
現在のステータス
作品:
- SVG、画像、TCCスクリプト付きMP3リソース。
- SWF:シェイプ、画像、ビデオ、オーディオ(MP3、ADPCM、PCM)、限られたアクションスクリプト2サポート、限られたモーフシェイプサポート。
うまくいきません:
- SWF:クリップレイヤー
- SWF:アクションスクリプト3を解釈します3
- SWF:ビットマップフィルター
- SWF:ネットワークアクセス
デモ
基本的なSVGデモ(画像クリック可能):

LVGでカプセル化されたNanovgデモ:

Nuklear GUIデモ:

フラッシュSWFデモ:

建物
今のところ、Windows実行可能ファイルは、MINGWを使用してLinuxホストにのみ構築されています。 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などの他のスクリプト型のlanuageを使用してください。
- sljitのようなJITでアクションスクリプトをスピードアップします。
- シェーダーと3Dサポート。
- パラレルシェイプ画像デコードおよびパラレルデコードサポート(PBZIP2など)を使用してファイル圧縮を使用します。
- その他のAudio Video Codecバックエンド。
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レンダー
- https://github.com/nical/lyon
- https://ciarographics.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/en/devnet/pdf/swf-file-format-spec.pdf
- amf v0 referemce https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/amf0-file-format specification.pdf
- AMF V3リファレンスhttps://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/amf-file-format-pec.pdf
- AS2リファレンスhttp://homepage.divms.uiowa.edu/~slonnegr/flash/actionscript2reference.pdf
LVGはhttps://github.com/lieffによって開発および維持されています