I'm working on a new OpenGL application, and am aware that display lists will be deprecated in OpenGL 3.1 (along with many other useful features, which (to me) seems kind of silly) and replaced with Vertex Buffer Objects. I successfully drew a triangle using VBOs on an NVidia card, but the example failed to run on an Intel chip on my netbook, because it does not support glGenBuffers. It seems there is a crucial flaw here in OpenGL (a compatibility breakage between newer and older GPUs/GMAs). As a small business, compatibility with as many systems as possible is necessary for my game, but I don't want my program to not work on newer graphics cards (due to its dependency on display lists, which have been removed from the OpenGL 4.1 specification). Which would give me the widest support on graphics cards (old AND new). Display lists, or vertex buffer objects?
If your application will run on GMA, you necessarily have a low poly count. So the inefficiency of having display lists emulated in the drivers for new video cards will not be a problem, they have bandwidth to spare.
If you're still concerned about efficiency, make sure to use glVertexPointer
/glDrawArray
to maximize batch size. This can be combined with display lists, but reduces the number of separate operations in the list and therefore makes emulation less problematic.
Worst case, if some platform really doesn't support display lists, you can replace glCallList
with a function call.