check if attribute is active

This commit is contained in:
codeanticode
2015-03-31 15:39:46 -04:00
parent 8ac36534d6
commit fcff028cf3
2 changed files with 17 additions and 3 deletions
@@ -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);
}
+8 -2
View File
@@ -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();
}
}