Skip to content

Commit 1db55f6

Browse files
authored
Merge pull request #7479 from processing/fix/model-buildgeometry
Fix usage of model() in buildGeometry()
2 parents ad777f2 + 0d5e383 commit 1db55f6

File tree

5 files changed

+41
-13
lines changed

5 files changed

+41
-13
lines changed

src/webgl/loading.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ function loading(p5, fn){
441441
if (flipV) {
442442
model.flipV();
443443
}
444+
model._makeTriangleEdges();
444445

445446
if (successCallback) {
446447
return successCallback(model);
@@ -464,6 +465,7 @@ function loading(p5, fn){
464465
if (flipV) {
465466
model.flipV();
466467
}
468+
model._makeTriangleEdges();
467469

468470
if (successCallback) {
469471
return successCallback(model);
@@ -1087,19 +1089,7 @@ function loading(p5, fn){
10871089
fn.model = function (model, count = 1) {
10881090
this._assert3d('model');
10891091
// p5._validateParameters('model', arguments);
1090-
if (model.vertices.length > 0) {
1091-
if (!this._renderer.geometryInHash(model.gid)) {
1092-
1093-
if (model.edges.length === 0) {
1094-
model._makeTriangleEdges();
1095-
}
1096-
1097-
model._edgesToVertices();
1098-
this._renderer._getOrMakeCachedBuffers(model);
1099-
}
1100-
1101-
this._renderer._drawGeometry(model, { count });
1102-
}
1092+
this._renderer.model(model, count);
11031093
};
11041094
}
11051095

src/webgl/p5.RendererGL.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,21 @@ class RendererGL extends Renderer {
586586
this.updateShapeVertexProperties();
587587
}
588588

589+
model(model, count = 1) {
590+
if (model.vertices.length > 0) {
591+
if (this.geometryBuilder) {
592+
this.geometryBuilder.addRetained(model);
593+
} else {
594+
if (!this.geometryInHash(model.gid)) {
595+
model._edgesToVertices();
596+
this._getOrMakeCachedBuffers(model);
597+
}
598+
599+
this._drawGeometry(model, { count });
600+
}
601+
}
602+
}
603+
589604
//////////////////////////////////////////////
590605
// Rendering
591606
//////////////////////////////////////////////

test/unit/visual/cases/webgl.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,4 +562,24 @@ visualSuite('WebGL', function() {
562562
screenshot();
563563
});
564564
});
565+
566+
visualSuite('buildGeometry()', () => {
567+
visualTest('can draw models', (p5, screenshot) => {
568+
p5.createCanvas(50, 50, p5.WEBGL);
569+
570+
const sphere = p5.buildGeometry(() => {
571+
p5.scale(0.25);
572+
p5.sphere();
573+
});
574+
575+
const geom = p5.buildGeometry(() => {
576+
p5.model(sphere);
577+
});
578+
579+
p5.background(255);
580+
p5.lights();
581+
p5.model(geom);
582+
screenshot();
583+
});
584+
});
565585
});
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"numScreenshots": 1
3+
}

0 commit comments

Comments
 (0)