   best way to do many texture mapped quads in 2d
  helloI want to make a 2D game and have chosen OpenGL for doing the graphics, what is the most efficient way to manage rendering many texture mapped quads?People say to avoid using immediate mode in OpenGL since there are more performant options... and that it is old.I have looked at display lists, but I don't think they are suitable since I will be either using different texture coordinates or different textures to facilitate animation, which would change frequently, making any generated display list obsolete because it has the wrong texture information...So, I have also read a little that there are "buffer objects", but I'm not 100% clear on how they are used and how it would apply to my situation of wanting to render many texture mapped quads but with different texture/texture coordinate information per quad if that quad is for an object which is being animated.Can anyone explain a little of the approach one would take with buffer objects to achieve this?  Or maybe tell me that I'm totally off base and there is some other way to do this.Thanks   
  Before getting into vertex buffer objects, it is important to understand vertex arrays, which VBOs extend off.Vertex arrays are the next step up from immediate mode and display lists.  You store all of your verticies, texture coords, normals etc inside arrays (typically of floats), and render them using a function such as glDrawArrays.  You can also use index buffers, which allows you to reuse vertex data - say, two  (or more) triangles that share a vertex in a model.  Index buffers are quite important cause graphics cards have caches on them which allow more efficient access to most recently used verticies.However, there is still a cost involved in actually sending these arrays from your system memory to the graphics card, which is not optimal.  This is where vertex buffer objects come in.  They allow you to upload your arrays to the graphics card RAM, so when issuing draw calls, the data is already available to the card.  So if you have lots of static data, this can work wonders.Now, in your case I would recommend trying plain vertex arrays first before moving onto vertex buffers.  The most important thing is to batch your quads - so if you have a handle of quads that share the same texture, put them all into an array and issue a single draw call to draw them.  This is where I think you will find yourself gaining the best performance boost.  Vertex arrays and buffers can be almost as slow as immediate mode rendering if you aren't efficiently batching your geometry.The same principle can be applied to immediate mode as well - note the fact that there is only one glBegin/End call for each batch:Bind textureglBegin-loop through and draw all quadsglEndHope this helps a bit!   