Microsoft DirectX 8.0 (C++)

IDirect3DDevice8::MultiplyTransform

デバイスのワールド行列、ビュー行列、または射影行列に、指定された行列を乗算する。

HRESULT MultiplyTransform(
  D3DTRANSFORMSTATETYPE State,
  CONST D3DMATRIX* pMatrix
);

パラメータ

State
[in] 変更するデバイス行列を指定する D3DTRANSFORMSTATETYPE 列挙型のメンバ、または D3DTS_WORLDMATRIX マクロ。最も一般的な設定は D3DTS_WORLDMATRIX(0) で、ワールド行列を変更するが、必要であれば、ビュー行列や射影行列を変更するように指定することもできる。
pMatrix
[in] 現在のトランスフォームを変更する D3DMATRIX 構造体へのポインタ。

戻り値

成功した場合は、D3D_OK を返す。

引数のいずれかが無効な場合は、D3DERR_INVALIDCALL になる。

注意

乗算の順序は、State × pMatrix である

アプリケーションが、トランスフォームの階層構造を使って動作するために、MultiplyTransform メソッドを使用することも考えられる。たとえば、腕を表すジオメトリとトランスフォームは、以下の階層で構成することもある。

shoulder_transformation
    upper_arm geometry
    elbow transformation
        lower_arm geometry
        wrist transformation
            hand geometry

アプリケーションでは、この階層をレンダリングするために以下の一連の呼び出しを行うことができる。このコードでは一部のパラメータのみ示す。

IDirect3DDevice8::SetTransform(D3DTS_WORLDMATRIX(0), 
    shoulder_transform)
IDirect3DDevice8::DrawPrimitive(upper_arm)
IDirect3DDevice8::MultiplyTransform(D3DTS_WORLDMATRIX(0), 
    elbow_transform)
IDirect3DDevice8::DrawPrimitive(lower_arm)
IDirect3DDevice8::MultiplyTransform(D3DTS_WORLDMATRIX(0), 
    wrist_transform)
IDirect3DDevice8::DrawPrimitive(hand)

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。

参照

IDirect3DDevice8::DrawPrimitiveIDirect3DDevice8::SetTransformD3DTS_WORLDD3DTS_WORLDnD3DTS_WORLDMATRIX