AFAIK p5. js 'WEBGL
режим все еще немного экспериментален, и некоторые функции, к которым вы привыкли в режиме 2D, все еще в работах .
На данный момент я могу предложить обходной путь: используйте внутреннюю форму, похожую на beginContour () :
function setup() {
createCanvas(window.innerWidth, window.innerHeight, WEBGL);
}
function draw() {
let strokeSize = 20;
background(2,8,51);
smooth();
fill(255);
//strokeJoin(BEVEL);
//strokeWeight(1);
stroke(255,255,255);
polygon(0, 0, 200, 7, 0.85);
}
function polygon(x, y, radius, npoints, thicknessRatio) {
let angle = TWO_PI / npoints;
beginShape();
//CW
for (let a = 0; a <= TWO_PI; a += angle) {
let sx = x + cos(a) * radius;
let sy = y + sin(a) * radius;
vertex(sx, sy);
}
// beginContour();
// CCW
for (let a = TWO_PI; a >= 0; a -= angle) {
let sx = x + cos(a) * radius * thicknessRatio;
let sy = y + sin(a) * radius * thicknessRatio;
vertex(sx, sy);
}
// endContour();
endShape(CLOSE);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/p5.min.js"></script>