I’ve re-read John Carmack’s famous .plan file (www.bluesnews.com/archives/carmack122396.html).

It compares Direct3D to openGL in 1996. It was the beginning of hardware accelerated 3D graphic cards.

John explains the differences between the simple, procedural openGl


glBegin (GL_TRIANGLES);
glVertex (0,0,0);
glVertex (1,1,0);
glVertex (2,0,0);
glEnd ();

and the ugly Direct3D (incomplete!) equivalent


v = &buffer.vertexes[0];
v->x = 0; v->y = 0; v->z = 0;
v++;
v->x = 1; v->y = 1; v->z = 0;
v++;
v->x = 2; v->y = 0; v->z = 0;
c = &buffer.commands;
c->operation = DRAW_TRIANGLE;
c->vertexes[0] = 0;
c->vertexes[1] = 1;
c->vertexes[2] = 2;
IssueExecuteBuffer (buffer);

You read this, and you feel confortable you have bet on the right horses (Drupal for example, or jquery, or extJs in the webapplication realm) and you stay away of the ugly beasts (I won’t cite them, they will recognize themselves).

KISS