従来相違があって不思議と互換性が無かった
頂点フォーマットとテクスチャフォーマットが D3D10 で統一されています。
これもシェーダーが統合されたおかげでしょうか。
Direct3D9 では例えば頂点だと
FLOAT4 float×4
FLOAT16_4 float(16bit)×4
SHORT4N short×4
UBYTE4 byte×4 (a b g r)
D3DCOLOR byte×4 (a r g b)
DEC3N (10,10,10)
等の専用形式があり、テクスチャにも
A32B32G32R32F
A16B16G16R16F
A16B16G16R16
A8B8G8R8
A8R8G8B8
A2R10G10B10
があります。上にあげたものはほぼ似たようなフォーマットですが、
それ以外のものは互換性が無くアクセスのために専用のコードが必要でした。
Direct3D10 では VertexShader も PixelShader も同じ性能を持っているので、
アクセス可能な Buffer および ShadeResource のフォーマットが同じものになって
いるようです。
(2次元圧縮の BC(DXT) 形式は除く)
その代わり頂点フォーマットでも R G B A 表記になります。
よく見ると D3D9 の A B G R 表記と逆順です。
もちろん x y z w にあわせたためだと思われます。
xyzw と rgba の統合までの道のり
・D3D8 まで ARGB → D3D9 で ABGR 追加 → D3D10 で RGBA に変更