|
D3DXMATRIX proj2;
D3DXMatrixPerspectiveFovLH(
&proj2,
D3DX_PI * 0.5f, // 90 - degree
(float)800 / (float)600,
1.0f,
1000.0f);
一个是用API算的,结果如下

另一个是自己计算的
float yScale = 1 / tan( m_Fov / 2 );
float xScale = yScale / m_Aspec;
float p = m_Far / (m_Far - m_Near );
memset( &m_ProjectionMatrix, 0, sizeof m_ProjectionMatrix );
m_ProjectionMatrix._11 = xScale;
m_ProjectionMatrix._22 = yScale;
m_ProjectionMatrix._33 = p;
m_ProjectionMatrix._43 = - m_Near * p;
m_ProjectionMatrix._34 = p;
数据内容和上面那个用D3Dx api计算的一样

但是
当我调用
m_Render->GetDevice()->SetTransform(D3DTS_PROJECTION, &proj);
m_Render->GetDevice()->SetTransform(D3DTS_PROJECTION, &proj2);
的时候 自己计算的那个矩阵居然会出一个warn
Direct3D9: (WARN) :Cannot compute WNear and WFar from the supplied projection matrix
Direct3D9: (WARN) :Setting wNear to 0.0 and wFar to 1.0
请教大虾这个是什么问题
|
|