Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/nyorain/rvg
Browse files Browse the repository at this point in the history
  • Loading branch information
nyorain committed Aug 21, 2018
2 parents 0dffb49 + d9b7a4b commit 6938269
Show file tree
Hide file tree
Showing 7 changed files with 970 additions and 27 deletions.
28 changes: 18 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Retained vulkan/vector graphics

Vulkan library for high-level 2D vector-like rendering.
Vulkan library for high-level 2D vector-like rendering in modern C++17.
Modeled loosely after svg, inspired by nanoVG.
Uses an object-oriented, retained mode idiom for rendering which makes it
highly efficient for rendering with vulkan since curves and shapes are not
Expand All @@ -13,15 +13,15 @@ Aims to provide a compromise between high level drawing functionality
and an api that can efficiently be implemented on the gpu.
Could e.g. easily be used for a vulkan gui library.

Written in C++17, the project is tagged as C by github because it embeds
[nuklears](https://github.com/vurtun/nuklear) font handling and
The project builds upon tested and proven libraries where possible, such as
[fontstash](https://github.com/memononen/fontstash) for font atlas building and
some [stb headers](https://github.com/nothings/stb).
Note that the project is still in a rather early stage, please report
all issues and questions coming up (simple things such as spelling errors
all issues and questions (simple things such as spelling errors
or missing docs on a function are appreciated as well).

For more information check out the example concepts below, the
[example](example/example.cpp) showing off many features,
[example](example/example_glfw.cpp) showing off many features,
or read the [introduction](docs/intro.md) which documents some basic
concepts and shows how to integrate rvg in more detail.

Expand Down Expand Up @@ -139,18 +139,26 @@ Screenshot of [example/example.cpp](example/example.cpp):
## Building

The library uses meson as build system. It uses a few of my other
libraries as dependencies to stay modular.
libraries as dependencies to stay modular but those will be automatically
built using meson. The only hard dependencies are vulkan as well as glslang
for building the spirv shaders.
You need a solid C++17 compiler (currently not tested with msvc),
gcc >= 7 is tested.
gcc >= 7 is tested. For gcc 7 you currently have to turn off werror
in meson (`meson configure -Dwerror=false` in build dir).
For the glfw example you need the glfw3 library (obviously with vulkan
support).

After building

```
meson build -Dexamples=true
ninja -C build
meson build -Dexample-glfw=true
cd build
ninja
```

you should be able to run the example in the build dir via `./example/example`
you should be able to run the example in the build dir via `./example/example_glfw`.
There is also an example using my experimental ny window abstraction instead of glfw,
enable it via `-Dexample-ny=true` (requires several low level xcb/wayland libraries).

# Notes

Expand Down
2 changes: 2 additions & 0 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
- [ ] make positioning textures easier (NO manual matrix...)
- [ ] transform matrix on paint?
- [ ] strokeWidth < fringeWidth (nvg line 2258), github.com/memononen/nanovg/issues/68
- [ ] remove code duplication in ny/glfw backends. Define app and such
only once (or at least the widgets once)

problem of __scaling__ should be solved in this release:
When using a non-window transform (e.g. level transform) then
Expand Down
Loading

0 comments on commit 6938269

Please sign in to comment.