How to render multiple objects that can each have multiple shaders in OpenGL 3.3?
<p>Im trying to make a 3D renderer with OpenGL using c++, well, so far I have a Scene class that contains a list of Objects and Materials objects (I also have classes for those and I written my code so an object can have multiple shaders (every shader will be able to affect a group of vertices in an object) but now I'm trying to find a good way to send all that information to openGL.</p>

<p><a href="https://stackoverflow.com/a/33163693">I've seen people suggest taking everything that uses the same shader and rendering that at once, and do the same for every shader</a>, well If I understood well enough,but is that a good idea if you can get the same shaders included in different objects, if I merged every vert that has shader A for example, won't it hurt that that group contains verts of separate objects when I try to draw them at once ? And if I take each object and separate each object according to their shaders, so for the rendering I would take Object A then split into its shader groups, then draw shadergroup1 in object1 then shader group2 in object 2 and so on.. Won't that be too many draw calls too. </p>

<p>What strategy do you recommend to accomplish that ? </p>