資源簡介
零資源分下載,分享精神至上~
一個綜合型的Direct3D示例程序的2.0版。加入綠寶石三維地形模擬系統。
用鍵盤上W,A,S,D,I,J,K,L,↑,↓,←,→12個鍵加上鼠標在美麗的三維空間中翱翔。包括了Direct3D初始化,DirectInput輸入處理,頂點緩存,光照與材質,文字輸出,顏色,紋理貼圖,四大變換,網格模型,X文件載入等等知識(當然還有默認被開啟的深度緩存)。
其中的3D人物模型使用的是變形金剛中的大黃蜂。
背景音樂為魔獸3暗夜精靈進行曲。
源碼的配套博文是 《【Visual C++】游戲開發筆記四十八 淺墨DirectX教程十六 三維地形系統的實現》
,文章地址為http://blog.csdn.net/zhmxy555/article/details/8685546,
點擊Release文件夾下的exe文件可以直接看到運行效果,運行需要DirectX運行庫的支持。報缺少D3D的DLL系列錯誤的童鞋們請google/百度一下 “DirectX 9.0c runtime”,下載并裝個最新版的。
報缺少MVCR100D.Dll錯誤的朋友們去下一個安裝就可以了,或者直接點擊sln打開工程再次編譯一次。
如果是想調試并運行源代碼,但是報錯了,請去下載最新版DirectX SDK并進行DirectX開發環境的配置。
編寫環境:VS2010
我的博客地址是http://blog.csdn.net/zhmxy555,源碼結合配套文章一起看效果更佳。
希望能和大家一起交流,共同學習,共同進步。
代碼片段和文件信息
//=============================================================================
//?Name:?CameraClass.cpp
// Des:?一個封裝了實現虛擬攝像機的類的源文件
//?2013年?3月10日??Create?by?淺墨?
//=============================================================================
#include?“CameraClass.h“
#ifndef?SCREEN_WIDTH
#define?SCREEN_WIDTH 800 //為窗口寬度定義的宏,以方便在此處修改窗口寬度
#define?SCREEN_HEIGHT 600 //為窗口高度定義的宏,以方便在此處修改窗口高度
#endif
//-----------------------------------------------------------------------------
//?Desc:?構造函數
//-----------------------------------------------------------------------------
CameraClass::CameraClass(IDirect3DDevice9?*pd3dDevice)
{
????m_pd3dDevice?=?pd3dDevice;
????m_vRightVector??=?D3DXVECTOR3(1.0f?0.0f?0.0f);???//?默認右向量與X正半軸重合
????m_vUpVector?????=?D3DXVECTOR3(0.0f?1.0f?0.0f);???//?默認上向量與Y正半軸重合
????m_vLookVector???=?D3DXVECTOR3(0.0f?0.0f?1.0f);???//?默認觀察向量與Z正半軸重合
????m_vCameraPosition??=?D3DXVECTOR3(0.0f?0.0f?-250.0f);???//?默認攝像機坐標為(0.0f?0.0f?-250.0f)
????m_vTargetPosition????=?D3DXVECTOR3(0.0f?0.0f?0.0f);//默認觀察目標位置為(0.0f?0.0f?0.0f);
}
//-----------------------------------------------------------------------------
//?Name:CameraClass::CalculateViewMatrix(?)
//?Desc:?根據給定的矩陣計算出取景變換矩陣
//-----------------------------------------------------------------------------
VOID?CameraClass::CalculateViewMatrix(D3DXMATRIX?*pMatrix)?
{
//1.先把3個向量都規范化并使其相互垂直,成為一組正交矩陣
????D3DXVec3Normalize(&m_vLookVector?&m_vLookVector);??//規范化觀察分量
????D3DXVec3Cross(&m_vUpVector?&m_vLookVector?&m_vRightVector);????//?上向量與觀察向量垂直
????D3DXVec3Normalize(&m_vUpVector?&m_vUpVector);????????????????//?規范化上向量
????D3DXVec3Cross(&m_vRightVector?&m_vUpVector?&m_vLookVector);????//?右向量與上向量垂直
????D3DXVec3Normalize(&m_vRightVector?&m_vRightVector);??????????//?規范化右向量
????//?2.創建出取景變換矩陣
//依次寫出取景變換矩陣的第一行
????pMatrix->_11?=?m_vRightVector.x;???????????//?Rx
????pMatrix->_12?=?m_vUpVector.x;??????????????//?Ux
????pMatrix->_13?=?m_vLookVector.x;????????????//?Lx
????pMatrix->_14?=?0.0f;
//依次寫出取景變換矩陣的第二行
????pMatrix->_21?=?m_vRightVector.y;???????????//?Ry
????pMatrix->_22?=?m_vUpVector.y;??????????????//?Uy
????pMatrix->_23?=?m_vLookVector.y;????????????//?Ly
????pMatrix->_24?=?0.0f;
//依次寫出取景變換矩陣的第三行
????pMatrix->_31?=?m_vRightVector.z;???????????//?Rz
????pMatrix->_32?=?m_vUpVector.z;??????????????//?Uz
????pMatrix->_33?=?m_vLookVector.z;????????????//?Lz
????pMatrix->_34?=?0.0f;
//依次寫出取景變換矩陣的第四行
????pMatrix->_41?=?-D3DXVec3Dot(&m_vRightVector?&m_vCameraPosition);????//?-P*R
????pMatrix->_42?=?-D3DXVec3Dot(&m_vUpVector?&m_vCameraPosition);???????//?-P*U
????pMatrix->_43?=?-D3DXVec3Dot(&m_vLookVector?&m_vCameraPosition);?????//?-P*L
????pMatrix->_44?=?1.0f;
}
//-----------------------------------------------------------------------------
//?Name:CameraClass::SetTargetPosition(?)
//?Desc:?設置攝像機的觀察位置
//-----------------------------------------------------------------------------
VOID?CameraCla
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????5271000??2013-03-04?22:19??D3Ddemo16??by淺墨\D3Ddemo16\bee.X
?????文件???????9826??2013-03-17?20:57??D3Ddemo16??by淺墨\D3Ddemo16\CameraClass.cpp
?????文件???????2273??2013-03-14?18:42??D3Ddemo16??by淺墨\D3Ddemo16\CameraClass.h
?????文件???????4265??2013-03-17?09:52??D3Ddemo16??by淺墨\D3Ddemo16\D3Ddemo16.vcxproj
?????文件???????1638??2013-03-17?09:52??D3Ddemo16??by淺墨\D3Ddemo16\D3Ddemo16.vcxproj.filters
?????文件????????143??2013-03-17?09:44??D3Ddemo16??by淺墨\D3Ddemo16\D3Ddemo16.vcxproj.user
?????文件????????737??2013-02-03?20:37??D3Ddemo16??by淺墨\D3Ddemo16\D3DUtil.h
?????文件???????4595??2013-02-03?20:37??D3Ddemo16??by淺墨\D3Ddemo16\DirectInputClass.cpp
?????文件???????1287??2013-02-03?20:37??D3Ddemo16??by淺墨\D3Ddemo16\DirectInputClass.h
?????文件????5717558??2013-03-17?22:20??D3Ddemo16??by淺墨\D3Ddemo16\green.jpg
?????文件?????120000??2013-03-17?20:28??D3Ddemo16??by淺墨\D3Ddemo16\heighmap.raw
?????文件?????134854??2013-03-03?23:11??D3Ddemo16??by淺墨\D3Ddemo16\icon.ico
?????文件??????24641??2013-03-18?02:36??D3Ddemo16??by淺墨\D3Ddemo16\main.cpp
?????文件???25908524??2013-03-18?02:33??D3Ddemo16??by淺墨\D3Ddemo16\NightElfX1.wav
?????文件???12582968??2013-03-17?21:43??D3Ddemo16??by淺墨\D3Ddemo16\RB_Bumblebee_TEXTSET_Color_NormX.bmp
?????文件???????7916??2013-03-18?01:55??D3Ddemo16??by淺墨\D3Ddemo16\TerrainClass.cpp
?????文件???????1866??2013-03-17?22:52??D3Ddemo16??by淺墨\D3Ddemo16\TerrainClass.h
?????文件????3145784??2013-03-17?21:43??D3Ddemo16??by淺墨\D3Ddemo16\VH_BumblebeeEngineCasters_TEXTSET_Color_NormX.bmp
?????文件???12582968??2013-03-17?21:44??D3Ddemo16??by淺墨\D3Ddemo16\VH_BumblebeeNew_TEXTSET_Color_NormX.bmp
?????文件????????894??2013-03-17?09:44??D3Ddemo16??by淺墨\D3Ddemo16.sln
????..A..H.?????17408??2013-03-18?02:38??D3Ddemo16??by淺墨\D3Ddemo16.suo
?????文件????5271000??2013-03-04?22:19??D3Ddemo16??by淺墨\Release\bee.X
?????文件??????38400??2013-03-18?02:52??D3Ddemo16??by淺墨\Release\D3Ddemo16.exe
?????文件?????805888??2013-03-18?02:52??D3Ddemo16??by淺墨\Release\D3Ddemo16.pdb
?????文件????5717558??2013-03-17?22:20??D3Ddemo16??by淺墨\Release\green.jpg
?????文件?????120000??2013-03-17?20:28??D3Ddemo16??by淺墨\Release\heighmap.raw
?????文件?????134854??2013-03-03?23:11??D3Ddemo16??by淺墨\Release\icon.ico
?????文件??????24641??2013-03-18?02:36??D3Ddemo16??by淺墨\Release\main.cpp
?????文件???25908524??2013-03-18?02:33??D3Ddemo16??by淺墨\Release\NightElfX1.wav
?????文件???12582968??2013-03-17?21:43??D3Ddemo16??by淺墨\Release\RB_Bumblebee_TEXTSET_Color_NormX.bmp
............此處省略8個文件信息
- 上一篇:3D場景漫游程序源碼 by淺墨
- 下一篇:3D游戲場景漫游4.0版程序源碼by淺墨
評論
共有 條評論