|
|
DX9中Samples->EffectParam.cpp里的东西,请指点一二三.
1.
D3DXMATRIXA16 mViewRotate = *g_Camera.GetViewMatrix();
mViewRotate._41 = mViewRotate._42 = mViewRotate._43 = 0.0f;
D3DXMatrixInverse( &mViewRotate, NULL, &mViewRotate );
if( g_ArcBall.GetSize() > 0 )
g_ArcBall[g_nActiveMesh].HandleMessages( hWnd, uMsg, wParam, lParam, &mViewRotate );
return 0;
把元素_41,_42,_43赋为0.0起什么作用呀?
2.
(DXUTmisc.cpp)
D3DXVECTOR3 CD3DArcBall::ScreenToVector( float fScreenPtX, float fScreenPtY )
{
// Scale to screen
FLOAT x = -(fScreenPtX - m_Offset.x - m_nWidth/2) / (m_fRadius*m_nWidth/2);
FLOAT y = (fScreenPtY - m_Offset.y - m_nHeight/2) / (m_fRadius*m_nHeight/2);
FLOAT z = 0.0f;
FLOAT mag = x*x + y*y;
if( mag > 1.0f )
{
FLOAT scale = 1.0f/sqrtf(mag);
x *= scale;
y *= scale;
}
else
z = sqrtf( 1.0f - mag );
// Return vector
return D3DXVECTOR3( x, y, z );
}
这是将屏幕上的点转变为3D向量吧.
(PIONT) m_Offset.x,m_Offset.y 代表什么?
FLOAT x ,FLOAT y 为什么要这样赋值?
3.
如果要实现分别绕X,Y,Z轴拖动旋转,怎么做?就象3DSMAX中那样.
|
|