资源简介
用C++编写的LOD实例源码。
有3种情况,包括四叉树部分实例。
C++游戏编写者。
代码片段和文件信息
//#include “..\..\GameEngine\GameEngine_Common.h“
#include “Camera.h“
CCamera::CCamera()
{
m_pos = D3DXVECTOR3(0.0f 0.0f 0.0f);
m_right = D3DXVECTOR3(1.0f 0.0f 0.0f);
m_look = D3DXVECTOR3(0.0f 0.0f 1.0f);
m_up = D3DXVECTOR3(0.0f 1.0f 0.0f);
}
CCamera::~CCamera(){}
void CCamera::InitCamera(D3DXVECTOR3& CameraPosD3DXVECTOR3& LookAtPosD3DXVECTOR3& UpPos){
D3DXVECTOR3 vLookAt=LookAtPos-CameraPos;
D3DXVECTOR3 vUp=UpPos;
D3DXVec3Normalize(&vLookAt &vLookAt);
D3DXVECTOR3 vRight;
D3DXVec3Cross(&vRight &vUp &vLookAt ); //DirectX可使用左手判断叉积方向
D3DXVec3Normalize(&vRight&vRight);
D3DXVec3Cross(&vUp &vLookAt &vRight);
D3DXVec3Normalize(&vUp&vUp);
m_pos=CameraPos;
m_right=vRight;
m_look=vLookAt;
m_up=vUp;
}
void CCamera::SetCameraPos(D3DXVECTOR3* pos)
{
m_pos = *pos;
}
D3DXVECTOR3* CCamera::GetCameraPos()
{
return &m_pos;
}
void CCamera::GetViewMatrix(D3DXMATRIX *pViewMat)
{
float PosRight = -D3DXVec3Dot( &m_right &m_pos);
float PosUp = -D3DXVec3Dot( &m_up &m_pos);
float PosLook = -D3DXVec3Dot( &m_look &m_pos);
(*pViewMat)(00) = m_right.x;
(*pViewMat)(01) = m_up.x;
(*pViewMat)(02) = m_look.x;
(*pViewMat)(03) = 0.0f;
(*pViewMat)(10) = m_right.y;
(*pViewMat)(11) = m_up.y;
(*pViewMat)(12) = m_look.y;
(*pViewMat)(13) = 0.0f;
(*pViewMat)(20) = m_right.z;
(*pViewMat)(21) = m_up.z;
(*pViewMat)(22) = m_look.z;
(*pViewMat)(23) = 0.0f;
(*pViewMat)(30) = PosRight;
(*pViewMat)(31) = PosUp;
(*pViewMat)(32) = PosLook;
(*pViewMat)(33) = 1.0f;
}
void CCamera::RotateRightAxis(float angle)
{
D3DXMATRIX M;
D3DXMatrixRotationAxis(&M &m_rightangle);
D3DXVec3TransformCoord(&m_look&m_look&M);
D3DXVec3TransformCoord(&m_up&m_up&M);
}
void CCamera::RotateUpAxis(float angle)
{
D3DXMATRIX M;
D3DXMatrixRotationAxis(&M &m_upangle);
D3DXVec3TransformCoord(&m_right&m_right&M);
D3DXVec3TransformCoord(&m_look&m_look&M);
}
void CCamera::RotateLookAxis(float angle)
{
D3DXMATRIX M;
D3DXMatrixRotationAxis(&M &m_lookangle);
D3DXVec3TransformCoord(&m_right&m_right&M);
D3DXVec3TransformCoord(&m_up&m_up&M);
}
void CCamera::MoveAlongY(float yAdd){
Move(0.0fyAdd0.0f);
}
void CCamera::MoveAlongZ(float zAdd){
Move(0.0f0.0fzAdd);
}
void CCamera::MoveAlongX(float xAdd){
Move(xAdd0.0f0.0f);
}
void CCamera::Move(float xAddfloat yAddfloat zAdd){
m_pos.x=m_pos.x + xAdd;
m_pos.y=m_pos.y + yAdd;
m_pos.z=m_pos.z + zAdd;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2571 2012-04-23 13:51 LOD\LOD1\Camera.cpp
文件 781 2005-11-12 17:03 LOD\LOD1\Camera.h
文件 10882 2012-04-23 13:51 LOD\LOD1\Debug\BuildLog.htm
文件 2048 2012-04-23 13:50 LOD\LOD1\Debug\LODTerrainDemo.exe.em
文件 19456 2012-04-23 13:51 LOD\LOD1\Debug\vc80.idb
文件 36864 2012-04-23 13:51 LOD\LOD1\Debug\vc80.pdb
文件 5271 2005-11-12 17:03 LOD\LOD1\Frustum.cpp
文件 536 2005-11-12 17:02 LOD\LOD1\Frustum.h
文件 1048576 2005-07-30 11:40 LOD\LOD1\heightmap.raw
文件 42851 2012-04-23 13:50 LOD\LOD1\LODTerrain.cpp
文件 1901 2005-11-12 17:04 LOD\LOD1\LODTerrain.h
文件 4874 2005-07-21 22:07 LOD\LOD1\LODTerrainDemo.dsp
文件 551 2005-07-13 10:19 LOD\LOD1\LODTerrainDemo.dsw
文件 274514 2005-12-16 19:48 LOD\LOD1\LODTerrainDemo.exe
文件 68608 2012-07-15 08:24 LOD\LOD1\LODTerrainDemo.ncb
文件 60928 2005-12-16 19:49 LOD\LOD1\LODTerrainDemo.opt
文件 1361 2005-12-16 19:48 LOD\LOD1\LODTerrainDemo.plg
文件 4608 2012-07-15 08:24 LOD\LOD1\LODTerrainDemo.suo
文件 8026 2012-04-23 13:50 LOD\LOD1\LODTerrainDemo.vcproj
文件 42281 2005-11-14 11:31 LOD\LOD1\LODTerrainDemo2.jpg
文件 6429 2005-12-16 19:48 LOD\LOD1\main.cpp
文件 196652 2005-11-13 23:26 LOD\LOD1\mountainTex.tga
文件 366159 2001-09-28 11:17 LOD\LOD2\Grass2.jpg
文件 4194 2005-11-19 14:00 LOD\LOD2\Halo3.gif
文件 6045 2005-11-19 14:47 LOD\LOD2\HardGrow3.gif
文件 6808 2005-11-19 12:54 LOD\LOD2\LensFlare.gif
文件 303174 2007-03-15 09:22 LOD\LOD2\LODTerrainDemo.exe
文件 18083 2002-11-16 22:36 LOD\LOD2\negx.jpg
文件 32047 2002-11-16 22:36 LOD\LOD2\negz.jpg
文件 22724 2002-11-16 22:36 LOD\LOD2\posx.jpg
............此处省略110个文件信息
评论
共有 条评论