Yeah, compatibility at every price. But I were more happy with writing a second code path for rendering from buffers, instead of having the current situation.
Somehow it seems, that D3D is draw-call-bound, and GL is now setup-call-bound.
And by the way, a little wish I have for GL3. I’d like to have the Direct3D9 DrawIndexedPrimitive call emulated:
HRESULT DrawIndexedPrimitive(
D3DPRIMITIVETYPE Type,
INT BaseVertexIndex,
UINT MinIndex,
UINT NumVertices,
UINT StartIndex,
UINT PrimitiveCount
);
In particular, BaseVertexIndex and StartIndex is what I have always missed. So this would help in setup cost somehow. The D3D version of my landscape renderer looks so elegant… Bind once, then draw, draw, draw… Maybe, I just have overseen the similar function in GL (my multiplaform backend ambitions were a bit halfhearted).

we still whine about Microsoft and DirectX.