HRESULT CMyCompositor9::AdjustViewMatrix( IDirect3DDevice9* d3ddev )
{
    ASSERT( d3ddev );
    HRESULT hr;

    if( m_needTurn == false ) {
        return S_FALSE;
    }

    //
    // view matrix
    //
    float x, y;
    x = float( m_x ) / 100 ;
    y = float( m_y ) / 100 ;
    D3DVECTOR from = { x, y, -4.0f };
    D3DVECTOR at = { 0.0f, 1.0f, 0.0f };
    D3DVECTOR up = { 0.0f, 1.0f, 0.0f };

    D3DMATRIX matView;
    MatrixLookAtLH(&matView, &from, &at, &up);
    FAIL_RET( d3ddev->SetTransform( D3DTS_VIEW, &matView ) );

    m_needTurn = false;
    return hr;
}
Ejemplo n.º 2
0
void C3d::SetupMatrices()
{
	D3DXMATRIXA16 matWorld1;
	D3DXMATRIXA16 mat;
	D3DXVECTOR3 vEyePt(0.0f, vRadius*distance*1.025f,vRadius*distance*-3.0f );
	D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
	D3DXVECTOR3 vUpVec( 0.0f, 0.5f, 0.0f );
	if(rotation)
	{
		D3DXMatrixIdentity(&mat);
		MatrixRotationY( &mat, timeGetTime()/1500.0f );
	}
	else
	{
		m_abArcBall.GetMat(&mat);
		vEyePt = D3DXVECTOR3(0.0f, 0.0f,vRadius*distance*-4.0f);
		vLookatPt = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
		vUpVec = D3DXVECTOR3( 0.0f, 1.0f, 1.0f );
	}
	
	MatrixMultiply(&matWorld , &mat, &matWorld1);
	g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld1 );
	D3DXMATRIXA16 matView;
	MatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec );
	g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
	D3DXMATRIXA16 matProj;
	MatrixPerspectiveFovLH( &matProj, D3DX_PI/5, Aspect, 1.0f, vRadius*20);// 10.0f );
	g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
Ejemplo n.º 3
0
// updates matrices from current settings
void ShadowCamera::CalculateMatrices(void)
{
  // view matrix
  m_mView = MatrixLookAtLH(m_vSource, m_vTarget, m_vUpVector);

  // projection matrix
  m_mProj = MatrixPerspectiveFovLH(m_fFOV, GetApp()->GetAspectRatio(), m_fNear, m_fFar);
}