|
|
??planeExtraction.pdf?Directx??????
D3DXMATRIX WorldMatrix;
D3DXMATRIX ViewMatrix;
D3DXMATRIX ProjectMatrix;
pD3DDevice->GetTransform( D3DTS_WORLD, &WorldMatrix );
pD3DDevice->GetTransform( D3DTS_VIEW, &ViewMatrix );
pD3DDevice->GetTransform( D3DTS_PROJECTION, & rojectMatrix );
D3DXMATRIX ComboMatrix;
D3DXMatrixMultiply(&ComboMatrix, &WorldMatrix, &ViewMatrix);
D3DXMatrixMultiply(&ComboMatrix, &ComboMatrix, &ProjectMatrix);
//D3DXMatrixMultiply(&ComboMatrix, &ViewMatrix, &ProjectMatrix);
// right clipping plane
frustum[0][0] = ComboMatrix._14 - ComboMatrix._11;
frustum[0][1] = ComboMatrix._24 - ComboMatrix._21;
frustum[0][2] = ComboMatrix._34 - ComboMatrix._31;
frustum[0][3] = ComboMatrix._44 - ComboMatrix._41;
NormalizePlane(frustum, 0);
// left clipping plane
frustum[1][0] = ComboMatrix._14 + ComboMatrix._11;
frustum[1][1] = ComboMatrix._24 + ComboMatrix._21;
frustum[1][2] = ComboMatrix._34 + ComboMatrix._31;
frustum[1][3] = ComboMatrix._44 + ComboMatrix._41;
NormalizePlane(frustum, 1);
// bottom clipping plane
frustum[2][0] = ComboMatrix._14 + ComboMatrix._12;
frustum[2][1] = ComboMatrix._24 + ComboMatrix._22;
frustum[2][2] = ComboMatrix._34 + ComboMatrix._32;
frustum[2][3] = ComboMatrix._44 + ComboMatrix._42;
NormalizePlane(frustum, 2);
// top clipping plane
frustum[3][0] = ComboMatrix._14 - ComboMatrix._12;
frustum[3][1] = ComboMatrix._24 - ComboMatrix._22;
frustum[3][2] = ComboMatrix._34 - ComboMatrix._32;
frustum[3][3] = ComboMatrix._44 - ComboMatrix._42;
NormalizePlane(frustum, 3);
// near clipping plane
frustum[4][0] = ComboMatrix._13;
frustum[4][1] = ComboMatrix._23;
frustum[4][2] = ComboMatrix._33;
frustum[4][3] = ComboMatrix._43;
NormalizePlane(frustum, 4);
// far clipping plane
frustum[5][0] = ComboMatrix._14 - ComboMatrix._13;
frustum[5][1] = ComboMatrix._24 - ComboMatrix._23;
frustum[5][2] = ComboMatrix._34 - ComboMatrix._33;
frustum[5][3] = ComboMatrix._44 - ComboMatrix._43;
NormalizePlane(frustum, 5);
???????????????????d3d??? near clipping plane ?
frustum[4][0] = ComboMatrix._14 + ComboMatrix._13;
frustum[4][1] = ComboMatrix._24 + ComboMatrix._23;
frustum[4][2] = ComboMatrix._34 + ComboMatrix._33;
frustum[4][3] = ComboMatrix._44 + ComboMatrix._43;
???planeExtraction.pdf?????opengl??????????direct3d?????
frustum[4][0] = ComboMatrix._13;
frustum[4][1] = ComboMatrix._23;
frustum[4][2] = ComboMatrix._33;
frustum[4][3] = ComboMatrix._43;
?????????????? |
|