DirectX地月系+高度图地形源代码


DirectX做的地月系模型并且附加一个高度图地形源代码 实现了雾化和简单的按键操作。
资源截图
代码片段和文件信息
#include “Camera.h“
#include 
#include “.camera.h“

#define new VNEW

CCamera::CCamera() :
m_fNear(0.f)
m_fFar(0.f)
m_fFOV(0.f)
m_fAspect(0.f)
m_bIsRot(false)
m_bIsTrans(false)
m_fCameraYawAngle(0.f)
m_fCameraPitchAngle(0.f)
m_vDelta(0.f 0.f 0.f)
m_fVelocity(0.01f)
m_fMaxPitch(D3DX_PI*0.49f)
m_fMinPitch(-D3DX_PI*0.49f)
{
m_EyePos = D3DXVECTOR3(0.f 0.f 0.f);
m_LookAt = D3DXVECTOR3(0.f 0.f 1.f);
m_Up  = D3DXVECTOR3(0.f 1.f 0.f);

}

CCamera::~CCamera()
{

}


void CCamera::SetViewParams( D3DXVECTOR3 &pos D3DXVECTOR3 &lookat D3DXVECTOR3 &up )
{
m_EyePos = pos;
m_LookAt = lookat;
m_Up  = up;
m_Direction = m_LookAt - m_EyePos;
D3DXVec3Cross( &m_Right &m_Up &m_Direction );


D3DXMatrixLookAtLH(&m_ViewTrans &m_EyePos &m_LookAt &m_Up);

D3DXMATRIX mInvView;
D3DXMatrixInverse( &mInvView NULL &m_ViewTrans );
D3DXVECTOR3* pZBasis = (D3DXVECTOR3*) &mInvView._31;
m_fCameraYawAngle   = atan2f( pZBasis->x pZBasis->z );
float fLen = sqrtf(pZBasis->z*pZBasis->z + pZBasis->x*pZBasis->x);
m_fCameraPitchAngle = -atan2f( pZBasis->y fLen );
}

void CCamera::SetProjParams( float fFOV float fAspect float fNear float fFar  )
{
m_fFOV = fFOV;
m_fAspect = fAspect;
m_fNear     = fNear;
m_fFar      = fFar;

D3DXMatrixPerspectiveFovLH( &m_ProjTrans m_fFOV m_fAspect m_fNear m_fFar );
}
void CCamera::SetOrthoProjParams( float w float h float fNear float fFar )
{
D3DXMatrixOrthoLH( &m_ProjTrans w h fNear fFar );
}
const D3DXMATRIX *CCamera::GetViewTrans() const
{
return &m_ViewTrans;
}
const D3DXMATRIX *CCamera::GetProjTrans() const
{
return &m_ProjTrans;
}

void CCamera::SetMoveVelocity( float fVelocity )
{
m_fVelocity = fVelocity;
}


LRESULT CCamera::HandleMessage(HWND hWnd UINT msg WPARAM wParam LPARAM lParam)
{
//m_vDelta = D3DXVECTOR3(0.f 0.f 0.f);
// setcapture getcursorPos
switch( msg )
{
case WM_LBUTTONDOWN:
{
m_bIsRot = true;
SetCapture(hWnd);
GetCursorPos(&m_LastPoint);
}
break;
case WM_LBUTTONUP:
{
m_bIsRot = false;
ReleaseCapture();
}
break;
}

return 0;
}

void CCamera::ProcessKey()
{
static float fPreTime = static_cast(timeGetTime());
float fCurrentTime = static_cast(timeGetTime());
float fElapsedTime = (fCurrentTime - fPreTime)*0.001f;
m_vDelta = D3DXVECTOR3(0.f 0.f 0.f);
float fVelocity = m_fVelocity * fElapsedTime;

if( GetKeyState(‘W‘) & 0x8000 )
{
m_bIsTrans = true;
m_vDelta.z += fVelocity;
}
if( GetKeyState(‘S‘) & 0x8000 )
{
m_bIsTrans = true;
m_vDelta.z -= fVelocity;
}
if( GetKeyState(‘A‘) & 0x8000 )
{
m_bIsTrans = true;
m_vDelta.x -= fVelocity;
}
if( GetKeyState(‘D‘) & 0x8000 )
{
m_bIsTrans = true;
m_vDelta.x += fVelocity;
}
if( GetKeyState(VK_HOME) & 0x8000 )
{
m_bIsTrans = true;
m_vDelta.y += fVelocity;
}
if( GetKeyState(VK_END) & 0x8000 )
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     116134  2007-07-27 11:03  DXprojectinanana.png

     文件     518233  2007-07-27 11:41  DXprojectinBlue hills.png

     文件     176128  2008-10-31 11:27  DXprojectinDXproject.exe

     文件     109640  2008-10-31 10:32  DXprojectinearth.X

     文件      20941  2004-03-28 22:48  DXprojectingrass.jpg

     文件     109636  2008-10-31 10:32  DXprojectinmoon.X

     文件     109636  2008-10-31 10:33  DXprojectinsun.X

     文件     659053  2008-08-22 16:44  DXprojectinSunset.png

     文件      66616  2008-10-21 14:38  DXprojectinTerrain_256.bmp

    ..A..H.     11264  2008-10-21 15:50  DXprojectDXproject.suo

     文件       4752  2008-10-21 14:12  DXprojectsrcCamera.cpp

     文件       2732  2008-10-21 14:12  DXprojectsrcCamera.h

     文件      24190  2008-10-21 15:50  DXprojectsrcdirectx.ico

     文件      42388  2008-10-31 11:25  DXprojectsrcDXproject.aps

     文件    1076224  2008-12-10 20:06  DXprojectsrcDXproject.ncb

     文件       1690  2008-10-21 15:50  DXprojectsrcDXproject.rc

     文件        907  2008-10-20 08:32  DXprojectsrcDXproject.sln

    ..A..H.     10240  2008-12-10 20:06  DXprojectsrcDXproject.suo

     文件       3822  2008-10-31 10:35  DXprojectsrcDXproject.vcproj

     文件       5266  2008-12-10 20:06  DXprojectsrcGame.cpp

     文件       3064  2008-12-10 20:06  DXprojectsrcMeshModle.cpp

     文件        935  2008-12-10 20:02  DXprojectsrcMeshModle.h

     文件        452  2008-10-21 15:50  DXprojectsrc
esource.h

     文件       3396  2008-12-10 20:03  DXprojectsrcTerrain.cpp

     文件        937  2008-12-10 20:00  DXprojectsrcTerrain.h

     目录          0  2008-10-31 11:43  DXprojectin

     目录          0  2008-12-10 20:06  DXprojectsrc

     目录          0  2008-10-31 11:43  DXproject

----------- ---------  ---------- -----  ----

              3078276                    28

............此处省略1个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)