Jump to content

  • Log In with Google      Sign In   
  • Create Account

I need some DirectX 11 code converted to DirectX 9


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Anddos   Members   -  Reputation: 497

Like
-1Likes
Like

Posted 06 April 2013 - 01:24 AM

i am not sure where to start on converting this camera code to directx 9 , would it be possible for someone todo it for me

 

void UpdateCamera()

{

    // Rotate target around camera

    /*camRotationMatrix = XMMatrixRotationRollPitchYaw(camPitch, camYaw, 0);

    camTarget = XMVector3TransformCoord(DefaultForward, camRotationMatrix );

    camTarget = XMVector3Normalize(camTarget);*/



    /*XMMATRIX RotateYTempMatrix;

    RotateYTempMatrix = XMMatrixRotationY(camYaw);



    // Walk

    camRight = XMVector3TransformCoord(DefaultRight, RotateYTempMatrix);

    camForward = XMVector3TransformCoord(DefaultForward, RotateYTempMatrix);

    camUp = XMVector3Cross(camForward, camRight);*/



    /*// Free Cam

    camRight = XMVector3TransformCoord(DefaultRight, camRotationMatrix);

    camForward = XMVector3TransformCoord(DefaultForward, camRotationMatrix);

    camUp = XMVector3Cross(camForward, camRight);*/



    /*camPosition += moveLeftRight*camRight;

    camPosition += moveBackForward*camForward;



    moveLeftRight = 0.0f;

    moveBackForward = 0.0f;



    camTarget = camPosition + camTarget;*/



    // Third Person Camera

    // Set the cameras target to be looking at the character.

    camTarget = charPosition;



    // This line is because this lessons model was set to stand on the point (0,0,0) (my bad), and we

    // don't want to just be looking at the models feet, so we move the camera's target vector up 5 units

    camTarget = XMVectorSetY(camTarget, XMVectorGetY(camTarget)+5.0f);    



    // Unlike before, when we rotated the cameras target vector around the cameras position,

    // we are now rotating the cameras position around it's target (which is the character)

    // Rotate camera around target

    camRotationMatrix = XMMatrixRotationRollPitchYaw(-camPitch, camYaw, 0);

    camPosition = XMVector3TransformNormal(DefaultForward, camRotationMatrix );

    camPosition = XMVector3Normalize(camPosition);



    // Set our cameras position to rotate around the character. We need to add 5 to the characters

    // position's y axis because i'm stupid and modeled the character in the 3d modeling program

    // to be "standing" on (0,0,0), instead of centered around it ;) Well target her head here though

    camPosition = (camPosition * charCamDist) + camTarget;



    // We need to set our cameras forward and right vectors to lay

    // in the worlds xz plane, since they are the vectors we will

    // be using to determine the direction our character is running

    camForward = XMVector3Normalize(camTarget - camPosition);    // Get forward vector based on target

    camForward = XMVectorSetY(camForward, 0.0f);    // set forwards y component to 0 so it lays only on

    // the xz plane

    camForward = XMVector3Normalize(camForward);

    // To get our camera's Right vector, we set it's x component to the negative z component from the

    // camera's forward vector, and the z component to the camera forwards x component

    camRight = XMVectorSet(-XMVectorGetZ(camForward), 0.0f, XMVectorGetX(camForward), 0.0f);



    // Our camera does not "roll", so we can safely assume that the cameras right vector is always

    // in the xz plane, so to get the up vector, we just get the normalized vector from the camera

    // position to the cameras target, and cross it with the camera's Right vector

    camUp =XMVector3Normalize(XMVector3Cross(XMVector3Normalize(camPosition - camTarget), camRight));



    camView = XMMatrixLookAtLH( camPosition, camTarget, camUp );

}

 


:)

Sponsor:

#2 unbird   Crossbones+   -  Reputation: 4974

Like
1Likes
Like

Posted 06 April 2013 - 01:39 AM

Where is the D3D 11 part?

The code is just about vector manipulation. MSDN has quite good documentation of each function. I think that those functions should work with D3D9 also.

Cheers!

#3 MJP   Moderators   -  Reputation: 11307

Like
1Likes
Like

Posted 06 April 2013 - 02:09 AM

Indeed, you can use DirectXMath with D3D9. D3D9 doesn't care which math library you use.



#4 Anddos   Members   -  Reputation: 497

Like
0Likes
Like

Posted 06 April 2013 - 02:25 AM

I just want D3DX functions in my source code so it looks neat


:)

#5 belfegor   Crossbones+   -  Reputation: 2611

Like
2Likes
Like

Posted 06 April 2013 - 04:14 AM

Why can't you do it your self? Function names are similar with those of D3DX

 

XMMatrixRotationRollPitchYaw -> D3DXMatrixRotationRollPitchYaw
 
XMVector3TransformCoord -> D3DXVec3TransformCoord
 
XMVector3Normalize -> D3DXVec3Normalize


#6 Anddos   Members   -  Reputation: 497

Like
0Likes
Like

Posted 06 April 2013 - 04:44 AM

because they only take 2 params, i know the return value is stored there but it just seems to be confusing me alot


:)

#7 belfegor   Crossbones+   -  Reputation: 2611

Like
1Likes
Like

Posted 06 April 2013 - 06:04 AM

As i can see In D3DX first params is almost (if not always) an output value/parameter, the same thing it returns. Now it is removed and you just use returned value.

 

Although this confuses me too, shouldn't  here be Vec3TransformNormal instead Vec3TransformCoord since we are talking about directions?

 

// "dx11"
camTarget = XMVector3TransformCoord(DefaultForward, camRotationMatrix );
 
// "dx9"
D3DXVec3TransformCoord(&camTarget, &DefaultForward, &camRotationMatrix);
 
// although you could use return value if you need to fill some variable with same values as camTarget receives from this function
otherVec3 = *D3DXVec3TransformCoord(&camTarget, &DefaultForward, &camRotationMatrix);

 

 

// "dx11"
camRotationMatrix = XMMatrixRotationRollPitchYaw(camPitch, camYaw, 0);
 
// "dx9"
D3DXMatrixRotationRollPitchYaw(&camRotationMatrix, camPitch, camYaw, 0);

Edited by belfegor, 06 April 2013 - 06:05 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS