A vector graphics renderer for bgfx with improved performance and batching, inspired by NanoVG and ImDrawList.
vg-renderer is a vector graphics rendering library designed for the bgfx graphics API, providing efficient 2D drawing capabilities for applications like user interfaces and game overlays. It builds upon ideas from NanoVG and ImDrawList, offering performance optimizations such as batched draw calls and separate shader programs for different rendering tasks.
Graphics programmers and game developers using bgfx who need a lightweight, performant vector graphics renderer for UI elements, HUDs, or 2D visualization.
Developers choose vg-renderer for its improved performance over similar libraries, with features like command list caching, stencil buffer clipping, and fine-grained control over anti-aliasing and geometry generation.
A vector graphics renderer for bgfx, based on ideas from NanoVG and ImDrawList (Dear ImGUI)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Batches multiple paths with shared states to reduce draw calls, improving performance, as highlighted in the README's comparison to NanoVG.
Uses distinct shaders for gradients and image patterns to minimize uniform usage, reducing GPU overhead compared to NanoVG's single program approach.
Supports command lists for layer-based rendering and tessellation caching, enabling efficient UI updates and reduced state changes, as mentioned in the README.
Integrates FontStash with glyph hashing improvements and optional ASCII caching, leading to faster text rendering, specified in the README's feature list.
Lacks support for miter limit, polygon holes, variable text line height, font blur effect, and skew transformations, which are available in NanoVG, as admitted in the README.
Tightly coupled with bgfx, making it unsuitable for projects using other graphics APIs and adding vendor lock-in, requiring manual integration as shown in the CMake setup.
Decomposes concave polygons on the CPU using libtess2, which can impact performance for complex shapes compared to GPU-based methods, as noted in the README.