void ofVbo::updateAttributeData(int location, const float * attr0x, int total){ VertexAttribute * attr = nullptr; if (ofIsGLProgrammableRenderer()) { switch (location){ case ofShader::POSITION_ATTRIBUTE: attr = &positionAttribute; break; case ofShader::COLOR_ATTRIBUTE: attr = &colorAttribute; break; case ofShader::NORMAL_ATTRIBUTE: attr = &normalAttribute; break; case ofShader::TEXCOORD_ATTRIBUTE: attr = &texCoordAttribute; break; default: if(customAttributes.find(location)!=customAttributes.end()) { attr = &customAttributes[location]; } break; } } else { if(customAttributes.find(location)!=customAttributes.end()) { attr = &customAttributes[location]; } } if (attr !=nullptr && attr->isAllocated()) { attr->updateData(0, total*attr->stride, attr0x); } }