my two cents on the whole irrlicht OGL thing - assume version 2.1 lowest compatibility, and 3.0 hopefully
this is because Intel have appalling drivers, which often on dx10 feature set cards report OGL 2.1 or OGL 3.0 but without many of the features and extensions
my two cents on flexible vertex formats:
irrlicht needs to do either of the two:
1) you need an array of (stringc name, binding) to pass to the GPU services when it compiles/adds your shader so you can tell openGL to bind the vertex attributes in the shader to slots from flexible vertex formats
2) you need to make irrlicht parse the vertex shader when Driver->version<300 (or GLSL version lower than 1.50) and find "layout(location = X) in genType variable;" and swap that for "attribute genType variable" and tell openGL to bind the vertex attributes in the shader to slots from flexible vertex formats
In my opinion APPROACH 2 is really nice
Then obviously it would be nice to have an interface for removing shaders/material renderers as irrlicht does not have one yet
Then its just a matter of sorting out the IMeshBuffer container to support the definitions of the layouts of the vertex data
USEFUL stuff to note:
1) Tell people how to make the compiler not force alignment of Vertices by padding
2) Support the full range of data types (byte,short,float,int and their unsigned counterparts)
3) Enable one to specify in the mesh buffer how these map to slots, how many components in the slot... etc.
4) Enable one to specify in the mesh buffer if the variables should be normalized (ints be converted to floats but then scaled to the [-1,1] range)
5) Enable one to specify if vertex attributes are interleaved or in separate arrays