Skip to content

Commit c7ee241

Browse files
authored
Merge pull request #7489 from processing/fix/geom-default-color
Fix buildGeometry absorbing the ambient fill color
2 parents 2fdb5eb + 45b02f8 commit c7ee241

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

src/webgl/p5.RendererGL.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import filterInvertFrag from "./shaders/filters/invert.frag";
4646
import filterThresholdFrag from "./shaders/filters/threshold.frag";
4747
import filterShaderVert from "./shaders/filters/default.vert";
4848
import { PrimitiveToVerticesConverter } from "../shape/custom_shapes";
49+
import { Color } from "../color/p5.Color";
4950

5051
const STROKE_CAP_ENUM = {};
5152
const STROKE_JOIN_ENUM = {};
@@ -438,8 +439,8 @@ class RendererGL extends Renderer {
438439
);
439440
}
440441
this.geometryBuilder = new GeometryBuilder(this);
441-
this.geometryBuilder.prevFillColor = [...this.states.curFillColor];
442-
this.states.curFillColor = [-1, -1, -1, -1];
442+
this.geometryBuilder.prevFillColor = this.states.fillColor;
443+
this.fill(new Color([-1, -1, -1, -1]));
443444
}
444445

445446
/**
@@ -458,7 +459,7 @@ class RendererGL extends Renderer {
458459
);
459460
}
460461
const geometry = this.geometryBuilder.finish();
461-
this.states.curFillColor = this.geometryBuilder.prevFillColor;
462+
this.fill(this.geometryBuilder.prevFillColor);
462463
this.geometryBuilder = undefined;
463464
return geometry;
464465
}

test/unit/visual/cases/webgl.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,5 +581,29 @@ visualSuite('WebGL', function() {
581581
p5.model(geom);
582582
screenshot();
583583
});
584+
585+
visualTest('only fills set in buildGeometry are kept', (p5, screenshot) => {
586+
p5.createCanvas(50, 50, p5.WEBGL);
587+
588+
const geom = p5.buildGeometry(() => {
589+
p5.push();
590+
p5.translate(-p5.width*0.2, 0);
591+
p5.scale(0.15);
592+
p5.sphere();
593+
p5.pop();
594+
595+
p5.push();
596+
p5.fill('red');
597+
p5.translate(p5.width*0.2, 0);
598+
p5.scale(0.15);
599+
p5.sphere();
600+
p5.pop();
601+
});
602+
603+
p5.fill('blue');
604+
p5.noStroke();
605+
p5.model(geom);
606+
screenshot();
607+
});
584608
});
585609
});
450 Bytes
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"numScreenshots": 1
3+
}

0 commit comments

Comments
 (0)