LVG (라이온 벡터 그래픽)
LVG는 가벼운 플래시 플레이어 교체품입니다. 기본 아이디어 : 우리는 패키지에 자산이 있으며 SCTIPTS를 렌더링합니다. 플레이어에게는 매우 작은 런타임 (비디오 코덱이없는 약 200kb)을 사용하도록 설계되었으며 Android, iOS, 웹 등에서 실행됩니다.
현재 C 스크립트를 사용하여 자산을로드하고 렌더링합니다. 왜 C 스크립트인가? C 컴파일러가 작고 C로 작성된 런타임이므로 다른 언어가 필요하지 않으며 스크립트를 공간을 저장하기 위해 컴파일 할 수 있습니다. 또 다른 이유는 호환성입니다. LVG는 작은 API와 OpenGL 만 노출되며 GUI를 포함하여 처음부터해야 할 다른 스크립팅 데우지와 함께 노출됩니다. 그러나 이미 작성된 C 코드는 엄청납니다. 일반적으로 저자는 C ++를 선호하지만 전체 프로젝트에 순수한 C를 사용해야하는 몇 가지 이유도 있습니다.
- Android 공유 객체 용 LibStdc ++를 포함 할 필요는 없으며, 일부 .APK 공간을 절약합니다 (공유 객체 LIBS는 일반적으로 각각의 지원되는 아키텍트에 대해 복제).
- 이로 인해 EMScripten 컴파일 된 WASM 코드의 크기가 줄어 듭니다 (이미 비교적 무겁습니다).
- 기본 C ++ 빌드는 소형 코드에도주의가 필요합니다. C ++로 작은 코드를 작성하는 것이 확실하지만 각 플랫폼/컴파일러에 대해 MinicRT와 같은 것이 필요합니다. 예를 들어 Farbrauch 코드를 참조하십시오.
- C ++ 코드는 훨씬 더 시끄러운 .map 파일을 생성하여 프로파일/맵 파일 분석을 조금 더 복잡하게 만듭니다. Chromium과 같은 프로젝트는 또한 객체 분석 도구 (덤프-스테이션-이니티얼 라이저와 같은)를 사용하며 이러한 도구에는 소음이 적습니다.
- 코드는 특정 OS'es에 더 쉽게 포팅 될 수 있습니다.
현재 지원되는 자산 다음 :
- SVG 벡터 이미지 (NANOSVG를 사용하여로드)
- 래스터 이미지 (stb_image.h를 사용하여로드)
- MP3 파일 (minimp3를 사용하여로드)
- 플래시 SWF 파일 (벡터, 래스터, 비디오 및 오디오를 포함 할 수 있음). 모든 SWF 비디오 코덱 (H263, VP6, FlashSV, FlashSV2, H264)은 추가 ~ 600KB입니다.
- TCC 또는 PICOC를 사용하는 스크립트
다음 백엔드를 사용하여 렌더링을 수행 할 수 있습니다.
현재 상태
공장:
- SVG, 이미지, TCC 스크립팅이있는 MP3 리소스.
- SWF : 모양, 이미지, 비디오, 오디오 (MP3, ADPCM, PCM), 제한된 액션 스크립트 2 지원, 제한된 모프 모양 지원.
작동하지 않습니다 :
- SWF : 클립 레이어
- SWF : 해석 액션 스크립트 3
- SWF : 비트 맵 필터
- SWF : 네트워크 액세스
시민
기본 SVG 데모 (이미지 클릭 가능) :

LVG에서 배상 된 Nanovg 데모 :

Nuklear Gui 데모 :

플래시 SWF 데모 :

건물
현재 Windows Executails는 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는 플랫폼, 오디오 및 비디오에 다른 백엔드를 사용하도록 구성 할 수 있습니다. 빌드 디렉토리에서 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 codec 백엔드.
파일에서 인코딩 된 것보다 더 많은 FPS를 얻기 위해 SWF 프레임 보간. [완료]- 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/en/devnet/pdf/swf-file-filat-spec.pdf
- amf v0 v0 참조 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-filat-spec.pdf
- AS2 참조 http://homepage.divms.uiowa.edu/~slonnegr/flash/actionscript2reference.pdf
LVG는 https://github.com/lieff에 의해 개발 및 유지됩니다