|
|
在消息处理函数中调用
void Camera::getViewMatrix(D3DXMATRIX* v)
{//keep camera's axes orthogonal to each orther
D3DXVec3Normalize(&_look,&_look);
D3DXVec3Cross(&_up,&_look,&_right);
D3DXVec3Normalize(&_up,&_up);
D3DXVec3Cross(&_right,&_up,&_look);
D3DXVec3Normalize(&_right,&_right);
//build the view matrix
float x = -D3DXVec3Dot(&_right,&_pos);
float y = -D3DXVec3Dot(&_up,&_pos);
float z = -D3DXVec3Dot(&_look,&_pos);
(*v)[0,0]=_right.x;(*v)[0,1]=_up.x;(*v)[0,2]=_look.x;(*v)[0,3]=0.0f;
(*v)[1,0]=_right.y;(*v)[1,1]=_up.y;(*v)[1,2]=_look.y;(*v)[1,3]=0.0f;
(*v)[2,0]=_right.z;(*v)[2,1]=_up.z;(*v)[2,2]=_look.z;(*v)[2,3]=0.0f;
(*v)[3,0]=x; (*v)[3,1]=y; (*v)[3,2]=z; (*v)[3,3]=1.0f;
};
SetTransform( D3DTS_VIEW, v );么?
好象行不通. |
|