OpenVG 1.1 examples
Dependency pin update; no example changes, rendered output unchanged.
- OpenVG_Library v1.0.4 -> v1.0.5 (McNopper/EGL v1.0.16 -> v1.0.17): the EGL conformance work - ES pbuffer delegation with format pairing, preserved swap behavior, EGL_EXT_buffer_age with the damage extensions, surfaceless contexts and reusable syncs (dEQP-EGL: 930 Pass / 28 Fail to 2307 Pass / 2 Fail, sharing, image, preserve_swap, buffer_age and the sync groups all at full Pass).
Dependency pin update; no example changes, rendered output unchanged.
- McNopper/EGL v1.0.15 -> v1.0.16 (via OpenVG_Library v1.0.4): the EGL entry point contract for images and syncs - no foreign function pointers from eglGetProcAddress, the pre-1.5 KHR aliases implemented, the extension string communicating the implemented core-promoted functionality, delegated EGLImages and the context-free fence wait (dEQP-EGL: the image group completes for the first time, fence_sync 28/28).
Dependency pin and build system update; no example changes, rendered output unchanged.
- Track GLUS v1.1.7: brings the embedded Linux windowing backends -
SoC=fbdev(with theGPU=Vivanteguard),SoC=WaylandandSoC=GBM(with theRotationflag) - and theOpenGL=ES32flavor. The platform EGL/OpenVG pair stays the provider on such targets (e.g. the Vivante GPU of the STM32MP1). - The GLUS platform libraries follow the windowing backend: fbdev and GBM need no X11, Wayland resolves its symbols through wayland-client and wayland-egl; the X11 libraries stay the Linux default.
- Verified: Windows, desktop Linux and ARM cross builds for all three windowings
- on the STM32MP157F-DK2, all five examples render under Weston and fullscreen without a compositor.
Dependency pin update; no example changes, rendered output unchanged.
- McNopper/EGL v1.0.14 -> v1.0.15 (via OpenVG_Library v1.0.3): the Wayland
backend presents again - the OpenVG software buffer is copied to the
compositor through
wl_shm, where it was rendered but never shown before - andeglSwapBuffersreports a failed post asEGL_BAD_NATIVE_WINDOWper EGL 1.5 section 3.10.4 on every backend.
Dependency pin update; no example changes, rendered output unchanged.
- McNopper/EGL v1.0.13 -> v1.0.14 (via OpenVG_Library v1.0.2): window surfaces are back-buffered again on Windows. v1.0.13 could back a window with a single-buffered pixel format, so GL windows stayed blank while running; OpenVG presents through EGL's software-buffer path, which that defect did not touch, but the stack stays on one fixed EGL release.
Dependency pin update; no example changes. All screenshots re-captured against the new stack (rendered output unchanged).
- McNopper/EGL v1.0.12 -> v1.0.13 (via OpenVG_Library v1.0.1): the dEQP-EGL conformance program (221 pass / 0 fail), the EGL 1.5 surface color space and the WGL sRGB fix that restores window surface creation on NVIDIA drivers.
The examples move to the McNopper/OpenGL build environment:
- CMake build modeled on McNopper/OpenGL: one
CMakeLists.txtper example,cppcheck/warningsmodules, executables inVG_Binaries/. Requires GLUS v1.1.5 (theOpenGL=VGflavor). - EGL/OpenVG pair per platform: the platform's own pair when it provides both (for example the Vivante GPU of the STM32MP1), otherwise McNopper/EGL with OpenVG_Library - the software OpenVG implementation derived from the Khronos sources.
- Legacy build systems removed: Eclipse CDT projects, the vendored GLUS
copy, the prebuilt
External/libraries and the old vendor DLLs. - Screenshots for every example.
The project is distributed under the MIT License - see LICENSE.
These examples are built on GLUS (MIT).
The dependencies added by this repository - McNopper/EGL (MIT) and
OpenVG_Library, whose implementation derives from the Khronos OpenVG 1.1
sources - are documented in THIRD-PARTY.md.
Required:
- CMake 3.14 or higher - Download
- C/C++ Compiler:
- Windows: Visual Studio 2013+ (MSVC)
- Linux: GCC or Clang
- Git - For fetching dependencies
- EGL with an OpenVG client API - provided by the platform, or by McNopper/EGL with OpenVG_Library (built automatically)
Check if CMake is installed:
cmake --versionShould show version 3.14 or higher.
GLUS is automatically fetched via CMake FetchContent, from the sibling local
checkout ../GLUS when present (multi-repo development layout), and otherwise
from github.com/McNopper/GLUS. When the
platform does not provide its own EGL/OpenVG pair, McNopper/EGL and
OpenVG_Library are fetched the same way.
Windows (Visual Studio):
mkdir build && cd build
cmake ..
cmake --build . --config ReleaseLinux:
mkdir build && cd build
cmake ..
makeExecutables will be in the VG_Binaries/ directory.
- GLUS v1.1.5 - Window/context boilerplate, math, image loading
- McNopper/EGL v1.0.15 and OpenVG_Library v1.0.3 - the EGL/OpenVG pair used when the platform does not provide its own
All examples demonstrate OpenVG 1.1 rendering.
- Example01_VG - Basic window and OpenVG initialization
- Example02_VG - Rendering of a triangle
- Example03_VG - Rendering the Khronos tiger
- Example04_VG - Bitmap font rendering
- Example05_VG - TTF font rendering using font2openvg output
| Layer | Command | Gate |
|---|---|---|
| cppcheck | cmake --build build/ninja --target cppcheck |
exits non-zero on findings |
| clang-tidy | python tools/check_tidy.py --build-dir build/ninja |
WarningsAsErrors in .clang-tidy |
Both layers are optional at build time; a clean checkout without them builds exactly as before. The clang-tidy profile keeps correctness classes and deliberately skips style - formatting here is authored, not derived.




