mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
check if attribute is active
This commit is contained in:
@@ -2586,6 +2586,7 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
}
|
||||
|
||||
for (VertexAttribute attrib: polyAttribs.values()) {
|
||||
if (!attrib.active()) continue;
|
||||
attrib.updateLoc(shader);
|
||||
attrib.bind(pgl);
|
||||
shader.setAttributeVBO(attrib.glLoc, attrib.glName,
|
||||
@@ -2596,7 +2597,10 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
shader.draw(glPolyIndex, icount, ioffset);
|
||||
}
|
||||
|
||||
for (VertexAttribute attrib: polyAttribs.values()) attrib.unbind(pgl);
|
||||
for (VertexAttribute attrib: polyAttribs.values()) {
|
||||
if (!attrib.active()) continue;
|
||||
attrib.unbind(pgl);
|
||||
}
|
||||
shader.unbind();
|
||||
}
|
||||
unbindPolyBuffers();
|
||||
@@ -7137,6 +7141,10 @@ public class PGraphicsOpenGL extends PGraphics {
|
||||
pgl.disableVertexAttribArray(glLoc);
|
||||
}
|
||||
|
||||
boolean active() {
|
||||
return -1 < glLoc;
|
||||
}
|
||||
|
||||
void updateLoc(PShader shader) {
|
||||
if (glLoc == -1) glLoc = shader.getAttributeLoc(name);
|
||||
}
|
||||
|
||||
@@ -4903,6 +4903,7 @@ public class PShapeOpenGL extends PShape {
|
||||
}
|
||||
|
||||
for (VertexAttribute attrib: polyAttribs.values()) {
|
||||
if (!attrib.active()) continue;
|
||||
attrib.updateLoc(shader);
|
||||
attrib.bind(pgl);
|
||||
shader.setAttributeVBO(attrib.glLoc, attrib.glName,
|
||||
@@ -4913,8 +4914,13 @@ public class PShapeOpenGL extends PShape {
|
||||
shader.draw(root.glPolyIndex, icount, ioffset);
|
||||
}
|
||||
|
||||
for (VertexAttribute attrib: polyAttribs.values()) attrib.unbind(pgl);
|
||||
if (shader != null && shader.bound()) shader.unbind();
|
||||
for (VertexAttribute attrib: polyAttribs.values()) {
|
||||
if (!attrib.active()) continue;
|
||||
attrib.unbind(pgl);
|
||||
}
|
||||
if (shader != null && shader.bound()) {
|
||||
shader.unbind();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user