Platform SDK: DirectX

IDirect3DDevice7::MultiplyTransform

IDirect3DDevice7::MultiplyTransform メソッドは、デバイスのワールド行列、ビュー行列、または射影行列に、指定された行列を乗算する。乗算の順は、lpD3Dmatrix 掛ける dtstTransformStateType である。

HRESULT MultiplyTransform(
  D3DTRANSFORMSTATETYPE dtstTransformStateType,  
  LPD3DMATRIX lpD3DMatrix                        
);

パラメータ

dtstTransformStateType
変更するデバイス行列を指定する D3DTRANSFORMSTATETYPE 列挙型のメンバ。最も一般的な設定は D3DTRANSFORMSTATE_WORLD で、ワールド行列を変更するが、必要であれば、ビュー行列や射影行列を変更するように指定することもできる。
lpD3DMatrix
現在のトランスフォームを変更する D3DMATRIX 構造体のアドレス。

戻り値

成功すれば D3D_OK を返す。

失敗すればエラーを返す。このメソッドは、引数の 1 つが無効な場合には、DDERR_INVALIDPARAMS を返す。

注意

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

shoulder_transformation
    upper_arm geometry
    elbow transformation
        lower_arm geometry
        wrist transformation
            hand geometry

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

IDirect3DDevice7::SetTransform(D3DTRANSFORMSTATE_WORLD, 
    shoulder_transform)
IDirect3DDevice7::DrawPrimitive(upper_arm)
IDirect3DDevice7::MultiplyTransform(D3DTRANSFORMSTATE_WORLD, 
    elbow_transform)
IDirect3DDevice7::DrawPrimitive(lower_arm)
IDirect3DDevice7::MultiplyTransform(D3DTRANSFORMSTATE_WORLD, 
    wrist_transform)
IDirect3DDevice7::DrawPrimitive(hand)

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  バージョン :DirectX 7.0 が必要。
  ヘッダー : d3d.h で宣言。

参照

IDirect3DDevice7::DrawPrimitiveIDirect3DDevice7::SetTransform