Open source · MIT C++20 · OpenGL 3.3

Vector graphics that feel native to modern C++.

Build crisp, animated 2D interfaces with a compact GPU renderer, an immediate-mode Canvas API, and a retained-mode scene graph.

hello_vectorgl.cpp C++
vectorgl::Canvas canvas;
canvas.init();

canvas.beginFrame(width, height);
canvas.setFillColor({
  0.27f, 0.52f, 0.96f, 1.0f
});
canvas.fillRoundedRect(
  32.0f, 32.0f, 240.0f, 96.0f, 18.0f
);
canvas.endFrame();
2Rendering APIs
22Easing curves
3Asset formats
8CI jobs
Rendered with VectorGL

See the library, not just the feature list

Every pixel below comes from the standalone C++ showcase executable. Explore more real programs for paths, animation, SVG, text, stress testing, and node editing.

VectorGL rendering a modern GPU vector interface Flagship showcaseSDF primitives · Bézier paths · Oklab color · animation Explore gallery →
Start here

Drop VectorGL into your CMake project

Fetch the library, link one target, and begin drawing. Dependencies are configured by CMake.

CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
  vectorgl
  GIT_REPOSITORY https://github.com/mahtab04/vectorgl.git
  GIT_TAG main
)
FetchContent_MakeAvailable(vectorgl)
target_link_libraries(your_app PRIVATE vectorgl)
Core capabilities

One renderer, two ways to work

Choose direct drawing for dynamic surfaces or a scene graph for structured, animated interfaces.

Documentation

Go from first frame to polished UI

Learn the architecture, follow focused recipes, and keep the API reference close at hand.

Built in the open

Ready to draw something?

Browse the runnable examples or inspect the full source on GitHub.