I'm collecting annoying things about D3D so that I can one day write an article about how it has still not caught up to OpenGL. Here is the latest.

aegisz: D3D is so broken
isanythingnotakn: hehehehe
isanythingnotakn: do tell :D
aegisz: my list is 14 items long
aegisz: latest additions: texture matrices are inconsistent with ever other transform
aegisz: and there's no mathematical specification of how it works.
aegisz:

  // D3D is such a hack.  :-(  Instead of doing texture matrix multiplication like
  // EVERYONE AND EVERYTHING ELSE, it wants translations for 2D texcoords in
  // row 3 instead of 4.  [note: they store matrices in row-major format
  // but document them transposed?!?!?  are they trying to be different
  // just... because?  or did they skip high-school mathematics?]
  mat._31 = mat._41;
  mat._32 = mat._42;

isanythingnotakn: hahah. Yea. See, I think some of the design behind is nice, better than OpenGL. But for some farked up reason they had to jack the other half of it up so bad it sucks
aegisz: I agree.
aegisz: The object-oriented model is nice.
aegisz: And storing tex params as part of the current state and not per-texture is nice.
aegisz: but there are so many things they should have just copied from GL
isanythingnotakn: Yea
aegisz: like, wtf? if texture coordinate translations are in row 3, how do you do rotations in t instead of r and s?
isanythingnotakn: yea haha. i have no idea what msft was smoking, seriously
aegisz: and why even HAVE a 4x4 matrix then? And what if you use 3D texture coordinates? I DON'T UNDERSTAND
aegisz: and it looks like an intern wrote the documentation for texture transformations :P
isanythingnotakn: hahahaha
aegisz: they do totally invalid things.