IDirect3DDevice2::MultiplyTransform

The IDirect3DDevice2::MultiplyTransform method modifies the current world matrix by combining it with a specified matrix. The multiplication order is lpD3DMatrix times dtstTransformStateType.

HRESULT MultiplyTransform(
  D3DTRANSFORMSTATETYPE dtstTransformStateType,  
  LPD3DMATRIX lpD3DMatrix                        
);
 

Parameters

dtstTransformStateType
One of the members of the D3DTRANSFORMSTATETYPE enumerated type. Only the D3DTRANSFORMSTATE_WORLD setting is likely to be useful. The matrix referred to by this parameter is modified by this method.
lpD3DMatrix
Address of a D3DMATRIX structure that modifies the current transformation.

Return Values

If the method succeeds, the return value is DD_OK.

If the method fails, the return value is an error. The method returns DDERR_INVALIDPARAMS if one of the arguments is invalid.

Remarks

An application might use the IDirect3DDevice2::MultiplyTransform method to work with hierarchies of transformations. For example, the geometry and transformations describing an arm might be arranged in the following hierarchy:

shoulder_transformation
    upper_arm geometry
    elbow transformation
        lower_arm geometry
        wrist transformation
            hand geometry
 

An application might use the following series of calls to render this hierarchy. (Not all of the parameters are shown in this pseudocode.)

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

This method was introduced with the IDirect3DDevice2 interface.

QuickInfo

  Windows NT: Use version 5.0 or later.
  Windows: Use Windows 95 or later. Available as a redistributable for Windows 95.
  Windows CE: Unsupported.
  Header: Declared in d3d.h.
  Import Library: Use ddraw.lib.

See Also

IDirect3DDevice2::DrawPrimitive, IDirect3DDevice2::SetTransform