資源簡介
零資源分下載,分享精神至上~
一個綜合型的Direct3D示例程序,用鍵盤上W,A,S,D,I,J,K,L,↑,↓,←,→12個鍵加上鼠標在美麗的三維空間中翱翔。包括了Direct3D初始化,DirectInput輸入處理,頂點緩存,光照與材質,文字輸出,顏色,紋理貼圖,四大變換,網格模型,X文件載入等等知識(當然還有默認被開啟的深度緩存)。
其中的3D人物模型使用的是PS3版《真三國無雙6》中的王元姬 ,一襲藍衣,很美。
背景音樂為雅尼的《蘭花》。
源碼的配套博文是 《【Visual C++】游戲開發筆記四十七 淺墨DirectX教程十五 翱翔于三維世界:攝像機的實現》
,文章地址為http://blog.csdn.net/zhmxy555/article/details/8657656,
點擊Debug下的exe文件可以直接看到運行效果,運行需要DirectX運行庫的支持。報缺少D3D的DLL系列錯誤的童鞋們請google/百度一下 “DirectX 9.0c runtime”,下載并裝個最新版的。
報缺少MVCR100D.Dll錯誤的朋友們去下一個安裝就可以了,或者直接點擊sln打開工程再次編譯一次。
如果是想調試并運行源代碼,但是報錯了,請去下載最新版DirectX SDK并進行DirectX開發環境的配置。
編寫環境:VS2010
我的博客地址是http://blog.csdn.net/zhmxy555,源碼結合配套文章一起看效果更佳。
希望能和大家一起交流,共同學習,共同進步。
by淺墨
代碼片段和文件信息
//=============================================================================
//?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?CameraClas
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????3145782??2013-03-04?23:39??D3Ddemo15?by淺墨\D3Ddemo15\5579_2.bmp
?????文件???????9835??2013-03-10?20:54??D3Ddemo15?by淺墨\D3Ddemo15\CameraClass.cpp
?????文件???????2275??2013-03-10?18:33??D3Ddemo15?by淺墨\D3Ddemo15\CameraClass.h
?????文件???????4175??2013-03-09?20:54??D3Ddemo15?by淺墨\D3Ddemo15\D3Ddemo15.vcxproj
?????文件???????1448??2013-03-09?20:54??D3Ddemo15?by淺墨\D3Ddemo15\D3Ddemo15.vcxproj.filters
?????文件????????143??2013-03-09?20:07??D3Ddemo15?by淺墨\D3Ddemo15\D3Ddemo15.vcxproj.user
?????文件????????737??2013-02-03?20:37??D3Ddemo15?by淺墨\D3Ddemo15\D3DUtil.h
?????文件??????53682??2013-03-10?21:12??D3Ddemo15?by淺墨\D3Ddemo15\Debug\CameraClass.obj
?????文件???????3862??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\cl.command.1.tlog
?????文件?????100780??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\CL.read.1.tlog
?????文件???????3028??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\CL.write.1.tlog
?????文件????????406??2013-03-09?20:08??D3Ddemo15?by淺墨\D3Ddemo15\Debug\D3Ddemo15.exe.em
?????文件????????472??2013-03-09?22:00??D3Ddemo15?by淺墨\D3Ddemo15\Debug\D3Ddemo15.exe.em
?????文件????????381??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\D3Ddemo15.exe.intermediate.manifest
?????文件?????????53??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\D3Ddemo15.lastbuildstate
?????文件???????2179??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\D3Ddemo15.log
?????文件????????208??2013-03-09?20:08??D3Ddemo15?by淺墨\D3Ddemo15\Debug\D3Ddemo15_manifest.rc
?????文件??????32212??2013-03-09?22:00??D3Ddemo15?by淺墨\D3Ddemo15\Debug\DirectInputClass.obj
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件??????????2??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件???????3488??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
?????文件???????7652??2013-03-10?23:53??D3Ddemo15?by淺墨\D3Ddemo15\Debug\li
............此處省略34個文件信息
- 上一篇:3D鏡面特效程序源碼 by淺墨
- 下一篇:3D場景漫游2.0版程序源碼 by淺墨
評論
共有 條評論