Comments (5)
To be honest, the main reason I haven't implemented round caps and joins + bevel joins is because in my project I don't really have a use for them (i.e. it would look a bit better with them, as I used them initially with NanoVG, but the difference isn't that big so I can live with that).
Another reason is that it simplifies mesh generation. E.g. the required number of indices and vertices without round joins is easily calculated in all cases (filled paths and strokes with or without AA fringes). Round joins requires either correctly calculating the number of vertices/indices before generating the mesh or have the ability to overallocate and discard unused elements (e.g. assume that each round join will always needs N vertices and if it ends up using only K (K < N) return the rest to the vertex buffer).
It's not hard to implement but it complicates things a bit more than I needed for my project.
What's supported at the moment is Square + Butt caps (just an offset as you said) and Miter joins.
Clipping line joins with scissor might be a solution but scissoring each shape separately forces a new draw command to be added to the command list. Reducing draw call was the primary reason I wrote this code, so... it's not an option for me.
from vg-renderer.
In case you are still interested, I just pushed the code for round caps and joins as well as bevel joins. Still no miter limit, so miter joins never convert to bevel joins.
Needs some cleanup because I decided to break the implementation of each join type into separate functions, but it works (tested in my project where I use most of the combinations).
Performance of previous features (miter joins + square/butt caps) should be the same as before. As it's expected round joins are more expensive (require more geometry especially with AA).
from vg-renderer.
Thanks.
Still no miter limit, so miter joins never convert to bevel joins.
Is it the function called nvgMiterLimit
in Nanovg?
Never used it, but I guess it should not be hard to implement if you have bevel joins...
from vg-renderer.
You might not have used it but it has a default value of 4 which means that miter angles smaller than ~29 degrees get converted to bevels.
I might implement it at some point. But I have to cleanup the code first and make it more compact (a lot of the logic is shared between the various combinations).
from vg-renderer.
If you want to see what your output will be without miter limit in NanoVG, try setting the limit to a really large value.
from vg-renderer.
Related Issues (20)
- Segmentation fault in stroker.cpp vg::addPosColor HOT 5
- Examples? Source for the SVG renderer HOT 1
- Update code to work with bgfx master HOT 2
- vg::textBox() broken HOT 1
- Make alpha blending optional HOT 2
- viewID at context creation is too restrictive HOT 8
- Unable to cleanly shutdown HOT 2
- Any examples? HOT 1
- VG does not discard state since bgfx commit 0881d98b HOT 1
- Instancing HOT 2
- Error in vertex calculation HOT 3
- Vg-renderer Usage Example/Documentation for BGFX. HOT 5
- Rendering issue HOT 7
- Questions HOT 26
- Rounded Rect corner order HOT 1
- Crazy idea #1: Stroke/fill colors in texture HOT 1
- Doesn't compile on gcc and clang HOT 7
- Draw bgfx texture directly HOT 2
- Nasty crash if scale happens to be zero. HOT 8
- Emscripten command buffer error HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vg-renderer.