資源簡介
第6章 紋理映射基礎
1、TextureBase
演示使用紋理貼圖的基本步驟。
2、TexFilterMode
演示最近點采樣和線性紋理過濾方式。在程序運行時,單擊鍵盤上的數字鍵“1”,使用最近點采樣紋理過濾方式,單擊鍵盤上的數字鍵“2”,則使用線性紋理過濾。
3、MipTexture
演示如何創建和使用多級漸進紋理。程序運行時,單擊鍵盤上的數字鍵“1”,則使用多級漸進紋理,單擊數字鍵“2”,則使用單級別紋理。通過按下“↓”鍵和“↑”鍵可以放大和縮小顯示的圖形,從而可以仔細觀察圖像的變化,看到多級漸進紋理的效果。
4、TexAddressMode
演示不同紋理尋址模式的效果。程序運行時,單擊鍵盤上的數字鍵“1”,使用重疊紋理尋址模式,單擊鍵盤上的數字鍵“2”,使用鏡像紋理尋址模式,單擊鍵盤上的數字鍵“3”,使用夾取紋理尋址模式,單擊鍵盤上的數字鍵“4” ,使用邊框顏色紋理尋址模式。
5、TexRenderState
演示紋理階段混合狀態的使用。

代碼片段和文件信息
//=============================================================================
//?Desc:?紋理影射基礎
//=============================================================================
#include?
//-----------------------------------------------------------------------------
//?Desc:?全局變量
//-----------------------------------------------------------------------------
LPDIRECT3D9?????????????g_pD3D???????=?NULL;????//Direct3D對象
LPDIRECT3DDEVICE9???????g_pd3dDevice?=?NULL;????//Direct3D設備對象
LPDIRECT3DVERTEXBUFFER9?g_pVB????????=?NULL;????//頂點緩沖區對象
LPDIRECT3DTEXTURE9??????g_pTexture???=?NULL;????//紋理對象
//-----------------------------------------------------------------------------
//?Desc:?頂點結構
//-----------------------------------------------------------------------------
struct?CUSTOMVERTEX
{
FLOAT?x?y?z;????//頂點位置??
FLOAT?uv?; ??//頂點紋理坐標
};
#define?D3DFVF_CUSTOMVERTEX???(D3DFVF_XYZ|D3DFVF_TEX1)
//-----------------------------------------------------------------------------
//?Desc:?設置變換矩陣
//-----------------------------------------------------------------------------
VOID?SetupMatrices()
{
????//創建并設置世界矩陣
????D3DXMATRIXA16?matWorld;
????D3DXMatrixIdentity(?&matWorld?);
????g_pd3dDevice->SetTransform(?D3DTS_WORLD?&matWorld?);
//創建并設置觀察矩陣
????D3DXVECTOR3?vEyePt(?0.0f?0.0f?-10?);
????D3DXVECTOR3?vLookatPt(?0.0f?0.0f?0.0f?);
????D3DXVECTOR3?vUpVec(?0.0f?1.0f?0.0f?);
????D3DXMATRIXA16?matView;
????D3DXMatrixLookAtLH(?&matView?&vEyePt?&vLookatPt?&vUpVec?);
????g_pd3dDevice->SetTransform(?D3DTS_VIEW?&matView?);
//創建并設置投影矩陣
????D3DXMATRIXA16?matProj;
????D3DXMatrixPerspectiveFovLH(?&matProj?D3DX_PI/4?1.0f?1.0f?100.0f?);
????g_pd3dDevice->SetTransform(?D3DTS_PROJECTION?&matProj?);
}
//-----------------------------------------------------------------------------
//?Desc:?初始化Direct3D
//-----------------------------------------------------------------------------
HRESULT?InitD3D(?HWND?hWnd?)
{
//創建Direct3D對象?該對象用于創建Direct3D設備對象
????if(?NULL?==?(?g_pD3D?=?Direct3DCreate9(?D3D_SDK_VERSION?)?)?)
????????return?E_FAIL;
//設置D3DPRESENT_PARAMETERS結構?準備創建Direct3D設備對象
????D3DPRESENT_PARAMETERS?d3dpp;
????ZeroMemory(?&d3dpp?sizeof(d3dpp)?);
????d3dpp.Windowed?=?TRUE;
????d3dpp.SwapEffect?=?D3DSWAPEFFECT_DISCARD;
????d3dpp.BackBufferFormat?=?D3DFMT_UNKNOWN;
//創建Direct3D設備對象
????if(?FAILED(?g_pD3D->CreateDevice(?D3DADAPTER_DEFAULT?D3DDEVTYPE_HAL?hWnd
??????????????????????????????????????D3DCREATE_SOFTWARE_VERTEXPROCESSING
??????????????????????????????????????&d3dpp?&g_pd3dDevice?)?)?)
????{
????????return?E_FAIL;
????}
//禁用照明效果
g_pd3dDevice->SetRenderState(?D3DRS_LIGHTING?FALSE?);?
//設置變換矩陣
SetupMatrices();
????return?S_OK;
}
//-----------------------------------------------------------------------------
//?Desc:?創建場景圖形
//-----------------------------------------------------------------------------
HRESULT?InitGriphics()
{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????39272??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件???????7400??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件??????40960??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件??????33351??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件????????910??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件???????8192??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件???????3479??2007-04-02?16:54??06_第六章?紋理映射基礎\01_Textureba
?????文件???????7889??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\TexFilterMode.cpp
?????文件??????40960??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\TexFilterMode.exe
?????文件??????14625??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\TexFilterMode.JPG
?????文件????????911??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\TexFilterMode.sln
?????文件???????8704??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\TexFilterMode.suo
?????文件???????3485??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\TexFilterMode.vcproj
?????文件???????2026??2007-04-02?16:54??06_第六章?紋理映射基礎\02_TexFilterMode\texture.jpg
?????文件???????9318??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\MipTexture.cpp
?????文件??????40960??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\MipTexture.exe
?????文件??????32012??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\MipTexture.JPG
?????文件????????909??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\MipTexture.sln
?????文件???????8192??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\MipTexture.suo
?????文件???????3476??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\MipTexture.vcproj
?????文件??????39272??2007-04-02?16:54??06_第六章?紋理映射基礎\03_MipTexture\texture.jpg
?????文件???????9691??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\TexAddressMode.cpp
?????文件??????40960??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\TexAddressMode.exe
?????文件??????33054??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\TexAddressMode.JPG
?????文件????????917??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\TexAddressMode.sln
?????文件???????8192??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\TexAddressMode.suo
?????文件???????3488??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\TexAddressMode.vcproj
?????文件??????26550??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\texture1.bmp
?????文件??????15606??2007-04-02?16:54??06_第六章?紋理映射基礎\04_TexAddressMode\texture2.bmp
?????文件??????10046??2007-04-02?16:54??06_第六章?紋理映射基礎\05_TexRenderState\TexStageState.cpp
............此處省略15個文件信息
評論
共有 條評論