How to draw reusing a mesh?

I’m not sure what’s the best way to draw a few instances of circles.
And don’t really understand how it’s drawing them.
Currently i have 1 circleMesh i get from ofPath.arc and then getTessellation. I’m not sure how to duplicate them

I have a vertex n frag shader that i use to animate the circle’s texture and set it position by supplying in my mouse position. I use the position to make sure my animation is always displaying in the center of the circle as well.

As a test i’m trying to add a 2nd circle, in future i might have N number of circles, each can be sharing same shaders, or some might have their own frag shader animation.

How can i add a 2nd circle? Can i reuse the circleMesh, and just tweak the “position” i supply the shader for each circle? Do i need to duplicate each shader or i still use the same one?

What i have now.

//setup
circlePath.setFillColor(ofColor(100, 0, 0));
circlePath.setCircleResolution (64);
circlePath.arc(ofPoint(0, 0), 150, 150, 0, 360);
circleMesh = circlePath.getTessellation();
shader.load("pattern.vert", "pattern.frag");


///draw
float tx = ofGetMouseX();
float ty = ofGetMouseY();

shader.begin();
shader.setUniform1f("time", ofGetElapsedTimef());
shader.setUniform2f("u_resolution", ofGetWidth(), ofGetHeight());
shader.setUniform1f("u_time", ofGetElapsedTimef());
shader.setUniform2f("u_mouse", tx, ty);
shader.setUniform2f("u_circleDimension", 150, 150);
circleMesh.draw();
shader.end();