现在的位置: 首页 > 综合 > 正文

Render()方法理解

2013年09月16日 ⁄ 综合 ⁄ 共 2432字 ⁄ 字号 评论关闭

HRESULT CMyD3DApplication::Render()
{ //背景色の設定
    m_pd3dDevice_Radar->Clear(0,NULL,D3DCLEAR_TARGET,0x00000255,1.0f,0L);
 
 //--------------------------------------------------------------------------//
 // Begin the scene
    if( SUCCEEDED( m_pd3dDevice_Radar->BeginScene() ) )//Begin!!
    {
        if (m_bPower)
  {
   D3DMATRIX matRotate, matScale, matTranslate;
   if (m_bHighV)
   {
    
    for(m_cRadarTarget.m_sTargetLink.Reset();!m_cRadarTarget.m_sTargetLink.EndOfList();m_cRadarTarget.m_sTargetLink.Next())
    {
     int radar_position = m_cRadarTarget.m_sTargetLink.CurrentPosition();
     vTarget = m_cRadarTarget.GetTargetPosition(radar_position);
     
     if(vTarget.x-m_fCenterPosX>0 && vTarget.y-m_fCenterPosY>0)
      //roll method
      D3DUtil_SetRotateZMatrix( matRotate, g_PI_DIV_2*3+40.0f*g_DEGTORAD);
     if(vTarget.x-m_fCenterPosX>0 && vTarget.y-m_fCenterPosY<0)
      //roll method
     D3DUtil_SetRotateZMatrix( matRotate, g_PI+50.0f*g_DEGTORAD);
     if(vTarget.x-m_fCenterPosX<0 && vTarget.y-m_fCenterPosY>0)
      D3DUtil_SetRotateZMatrix( matRotate, +50.0f*g_DEGTORAD );
     if(vTarget.x-m_fCenterPosX<0 && vTarget.y-m_fCenterPosY<0)
      D3DUtil_SetRotateZMatrix( matRotate, g_PI-50.0f*g_DEGTORAD );
     
     m_pd3dDevice_Radar->SetMaterial( &mtrl_echo[radar_position] );
     

          
          //m._11 = m_cRadarTarget.GetTargetSize(radar_position)
          //m._22 = m_cRadarTarget.GetTargetSize(radar_position)
          //m._33 = 1.0f
          //m._12 = m._13 = m._14 = m._21 = m._23 = m._24 = 0.0f;
        //m._31 = m._32 = m._34 = m._41 = m._42 = m._43 = 0.0f;
        //m._11 = m._22 = m._33 = m._44 = 1.0f;
     D3DUtil_SetScaleMatrix( matScale, m_cRadarTarget.GetTargetSize(radar_position), m_cRadarTarget.GetTargetSize(radar_position), 1.0f );
     
     //m._41 = vTarget.x; m._42 = vTarget.y; m._43 = vTarget.z;
     D3DUtil_SetTranslateMatrix( matTranslate, vTarget);
     
     D3DMath_MatrixMultiply( matWorld_echo, matRotate, matTranslate );//[Q] = [A] * [B]
     D3DMath_MatrixMultiply( matWorld_echo, matScale, matWorld_echo );//[Q] = [A] * [B]
     
     //从视图空间到到屏幕的投影转换
     m_pd3dDevice_Radar->SetTransform( D3DTRANSFORMSTATE_WORLD, &matWorld_echo );
     
     //渲染矩形m_MeshTarget
     m_pd3dDevice_Radar->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX,m_MeshTarget, 4, 0 );
    }
   }
  }
  
  m_pd3dDevice_Radar->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, FALSE );
        m_pd3dDevice_Radar->EndScene();
    }
    //--------------------------------------------------------------------------//
 
 m_pddsRenderTarget->ReleaseDC(hDC); 
 

 return S_OK;
}
 

抱歉!评论已关闭.