DirectX示例--顶点雾化

DirectX示例--顶点雾化

DirectX示例--顶点雾化//=============================================================================
DirectX示例--顶点雾化
//Desc:顶点雾化效果
DirectX示例--顶点雾化
//=============================================================================
DirectX示例--顶点雾化
#include<d3dx9.h>
DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//全局变量
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
LPDIRECT3D9g_pD3D=NULL;//Direct3D对象
DirectX示例--顶点雾化
LPDIRECT3DDEVICE9g_pd3dDevice=NULL;//Direct3D设备对象
DirectX示例--顶点雾化

DirectX示例--顶点雾化LPD3DXMESHg_pMesh
=NULL;//网格模型对象
DirectX示例--顶点雾化
D3DMATERIAL9*g_pMeshMaterials=NULL;//网格模型材料
DirectX示例--顶点雾化
LPDIRECT3DTEXTURE9*g_pMeshTextures=NULL;//网格模型纹理
DirectX示例--顶点雾化
DWORDg_dwNumMaterials=0L;//网格模型子块数量
DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:
DirectX示例--顶点雾化
//----------------------------------------------------------------------------
DirectX示例--顶点雾化
inlineFLOATHeightField(FLOATx,FLOATz)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化FLOATy
=0.0f;
DirectX示例--顶点雾化y
+=10.0f*cosf(0.051f*x+0.0f)*sinf(0.055f*x+0.0f);
DirectX示例--顶点雾化y
+=10.0f*cosf(0.053f*z+0.0f)*sinf(0.057f*z+0.0f);
DirectX示例--顶点雾化y
+=2.0f*cosf(0.101f*x+0.0f)*sinf(0.105f*x+0.0f);
DirectX示例--顶点雾化y
+=2.0f*cosf(0.103f*z+0.0f)*sinf(0.107f*z+0.0f);
DirectX示例--顶点雾化y
+=2.0f*cosf(0.251f*x+0.0f)*sinf(0.255f*x+0.0f);
DirectX示例--顶点雾化y
+=2.0f*cosf(0.253f*z+0.0f)*sinf(0.257f*z+0.0f);
DirectX示例--顶点雾化
returny;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:初始化Direct3D
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
HRESULTInitD3D(HWNDhWnd)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//创建Direct3D对象,该对象用来创建Direct3D设备对象
DirectX示例--顶点雾化
if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION)))
DirectX示例--顶点雾化
returnE_FAIL;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置D3DPRESENT_PARAMETERS结构,准备创建Direct3D设备对象
DirectX示例--顶点雾化
D3DPRESENT_PARAMETERSd3dpp;
DirectX示例--顶点雾化ZeroMemory(
&d3dpp,sizeof(d3dpp));
DirectX示例--顶点雾化d3dpp.Windowed
=TRUE;
DirectX示例--顶点雾化d3dpp.SwapEffect
=D3DSWAPEFFECT_DISCARD;
DirectX示例--顶点雾化d3dpp.BackBufferFormat
=D3DFMT_UNKNOWN;
DirectX示例--顶点雾化d3dpp.EnableAutoDepthStencil
=TRUE;
DirectX示例--顶点雾化d3dpp.AutoDepthStencilFormat
=D3DFMT_D16;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//创建Direct3D设备对象
DirectX示例--顶点雾化
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
DirectX示例--顶点雾化D3DCREATE_SOFTWARE_VERTEXPROCESSING,
DirectX示例--顶点雾化
&d3dpp,&g_pd3dDevice)))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
returnE_FAIL;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置环境光
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_AMBIENT,0xffffffff);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置雾的颜色
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGCOLOR,0xff0000ff);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置纹理过滤状态
DirectX示例--顶点雾化
g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
DirectX示例--顶点雾化g_pd3dDevice
->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
DirectX示例--顶点雾化g_pd3dDevice
->SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);
DirectX示例--顶点雾化g_pd3dDevice
->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
returnS_OK;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:从绝对路径中提取纹理文件名
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
voidRemovePathFromFileName(LPSTRfullPath,LPWSTRfileName)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//先将fullPath的类型变换为LPWSTR
DirectX示例--顶点雾化
WCHARwszBuf[MAX_PATH];
DirectX示例--顶点雾化MultiByteToWideChar(CP_ACP,
0,fullPath,-1,wszBuf,MAX_PATH);
DirectX示例--顶点雾化wszBuf[MAX_PATH
-1]=L'/0';
DirectX示例--顶点雾化
DirectX示例--顶点雾化WCHAR
*wszFullPath=wszBuf;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//从绝对路径中提取文件名
DirectX示例--顶点雾化
LPWSTRpch=wcsrchr(wszFullPath,'//');
DirectX示例--顶点雾化
if(pch)
DirectX示例--顶点雾化lstrcpy(fileName,
++pch);
DirectX示例--顶点雾化
else
DirectX示例--顶点雾化lstrcpy(fileName,wszFullPath);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:创建场景图形
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
HRESULTInitGeometry()
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化LPD3DXBUFFERpD3DXMtrlBuffer;
//存储模型材料的缓冲区对象
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//从磁盘文件加载网格模型
DirectX示例--顶点雾化
if(FAILED(D3DXLoadMeshFromX(L"seafloor.x",D3DXMESH_SYSTEMMEM,
DirectX示例--顶点雾化g_pd3dDevice,NULL,
DirectX示例--顶点雾化
&pD3DXMtrlBuffer,NULL,&g_dwNumMaterials,
DirectX示例--顶点雾化
&g_pMesh)))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化MessageBox(NULL,L
"Couldnotfindseafloor.x",L"Fog",MB_OK);
DirectX示例--顶点雾化
returnE_FAIL;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
//从网格模型中提取材料属性和纹理文件名
DirectX示例--顶点雾化
D3DXMATERIAL*d3dxMaterials=(D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
DirectX示例--顶点雾化g_pMeshMaterials
=newD3DMATERIAL9[g_dwNumMaterials];//材料结构数组
DirectX示例--顶点雾化

DirectX示例--顶点雾化
if(g_pMeshMaterials==NULL)
DirectX示例--顶点雾化
returnE_OUTOFMEMORY;
DirectX示例--顶点雾化g_pMeshTextures
=newLPDIRECT3DTEXTURE9[g_dwNumMaterials];
DirectX示例--顶点雾化
if(g_pMeshTextures==NULL)
DirectX示例--顶点雾化
returnE_OUTOFMEMORY;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//逐块提取网格模型材料属性和纹理文件名
DirectX示例--顶点雾化
for(DWORDi=0;i<g_dwNumMaterials;i++)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//复制材料属性
DirectX示例--顶点雾化
g_pMeshMaterials[i]=d3dxMaterials[i].MatD3D;
DirectX示例--顶点雾化g_pMeshMaterials[i].Ambient
=g_pMeshMaterials[i].Diffuse;
DirectX示例--顶点雾化
DirectX示例--顶点雾化g_pMeshTextures[i]
=NULL;
DirectX示例--顶点雾化
if(d3dxMaterials[i].pTextureFilename!=NULL&&
DirectX示例--顶点雾化strlen(d3dxMaterials[i].pTextureFilename)
>0)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//获取纹理文件名
DirectX示例--顶点雾化
WCHARfilename[256];
DirectX示例--顶点雾化RemovePathFromFileName(d3dxMaterials[i].pTextureFilename,filename);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//创建纹理
DirectX示例--顶点雾化
if(FAILED(D3DXCreateTextureFromFile(g_pd3dDevice,filename,
DirectX示例--顶点雾化
&g_pMeshTextures[i])))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化MessageBox(NULL,L
"Couldnotfindtexturemap",L"Fog",MB_OK);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化}

DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
//释放在加载模型文件时创建的保存模型材质和纹理信息的缓冲区对象
DirectX示例--顶点雾化
pD3DXMtrlBuffer->Release();
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//修改网格模型
DirectX示例--顶点雾化
LPDIRECT3DVERTEXBUFFER9pVB;
DirectX示例--顶点雾化
if(SUCCEEDED(g_pMesh->GetVertexBuffer(&pVB)))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化DirectX示例--顶点雾化
structVERTEXDirectX示例--顶点雾化{FLOATx,y,z,tu,tv;};
DirectX示例--顶点雾化VERTEX
*pVertices;
DirectX示例--顶点雾化DWORDdwNumVertices
=g_pMesh->GetNumVertices();
DirectX示例--顶点雾化
DirectX示例--顶点雾化pVB
->Lock(0,0,(void**)&pVertices,0);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
for(DWORDi=0;i<dwNumVertices;i++)
DirectX示例--顶点雾化pVertices[i].y
=HeightField(pVertices[i].x,pVertices[i].z);
DirectX示例--顶点雾化
DirectX示例--顶点雾化pVB
->Unlock();
DirectX示例--顶点雾化pVB
->Release();
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
returnS_OK;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:释放创建对象
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
VOIDCleanup()
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//释放网格模型材料
DirectX示例--顶点雾化
if(g_pMeshMaterials!=NULL)
DirectX示例--顶点雾化delete[]g_pMeshMaterials;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//释放网格模型纹理
DirectX示例--顶点雾化
if(g_pMeshTextures)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
for(DWORDi=0;i<g_dwNumMaterials;i++)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
if(g_pMeshTextures[i])
DirectX示例--顶点雾化g_pMeshTextures[i]
->Release();
DirectX示例--顶点雾化}

DirectX示例--顶点雾化delete[]g_pMeshTextures;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
//释放网格模型对象
DirectX示例--顶点雾化
if(g_pMesh!=NULL)
DirectX示例--顶点雾化g_pMesh
->Release();
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//释放Direct3D设备对象
DirectX示例--顶点雾化
if(g_pd3dDevice!=NULL)
DirectX示例--顶点雾化g_pd3dDevice
->Release();
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//释放Direct3D对象
DirectX示例--顶点雾化
if(g_pD3D!=NULL)
DirectX示例--顶点雾化g_pD3D
->Release();
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-------------------------------------------------
DirectX示例--顶点雾化
//Desc:设置变换矩阵
DirectX示例--顶点雾化
//--------------------------------------------------
DirectX示例--顶点雾化
VOIDSetupMatrices()
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//创建并设置世界矩阵
DirectX示例--顶点雾化
D3DXMATRIXA16matWorld;
DirectX示例--顶点雾化D3DXMatrixRotationY(
&matWorld,timeGetTime()/1000.0f);
DirectX示例--顶点雾化
//D3DXMatrixIdentity(&matWorld);
DirectX示例--顶点雾化
g_pd3dDevice->SetTransform(D3DTS_WORLD,&matWorld);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//创建并设置观察矩阵
DirectX示例--顶点雾化
D3DXVECTOR3vEyePt(0.0f,30.0f,-100.0f);
DirectX示例--顶点雾化D3DXVECTOR3vLookatPt(
0.0f,0.0f,0.0f);
DirectX示例--顶点雾化D3DXVECTOR3vUpVec(
0.0f,1.0f,0.0f);
DirectX示例--顶点雾化D3DXMATRIXA16matView;
DirectX示例--顶点雾化D3DXMatrixLookAtLH(
&matView,&vEyePt,&vLookatPt,&vUpVec);
DirectX示例--顶点雾化g_pd3dDevice
->SetTransform(D3DTS_VIEW,&matView);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//创建并设置投影矩阵
DirectX示例--顶点雾化
D3DXMATRIXA16matProj;
DirectX示例--顶点雾化D3DXMatrixPerspectiveFovLH(
&matProj,D3DX_PI/4,1.0f,1.0f,200.0f);
DirectX示例--顶点雾化g_pd3dDevice
->SetTransform(D3DTS_PROJECTION,&matProj);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:渲染图形
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
VOIDRender()
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//清空后台缓冲区
DirectX示例--顶点雾化
g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
DirectX示例--顶点雾化D3DCOLOR_XRGB(
0,0,255),1.0f,0);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//开始在后台缓冲区绘制图形
DirectX示例--顶点雾化
if(SUCCEEDED(g_pd3dDevice->BeginScene()))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化SetupMatrices();
//设置世界矩阵
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//逐块渲染网格模型
DirectX示例--顶点雾化
for(DWORDi=0;i<g_dwNumMaterials;i++)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//设置材料和纹理
DirectX示例--顶点雾化
g_pd3dDevice->SetMaterial(&g_pMeshMaterials[i]);
DirectX示例--顶点雾化g_pd3dDevice
->SetTexture(0,g_pMeshTextures[i]);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//渲染模型
DirectX示例--顶点雾化
g_pMesh->DrawSubset(i);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
//结束在后台缓冲区渲染图形
DirectX示例--顶点雾化
g_pd3dDevice->EndScene();
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
//将在后台缓冲区绘制的图形提交到前台缓冲区显示
DirectX示例--顶点雾化
g_pd3dDevice->Present(NULL,NULL,NULL,NULL);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:消息处理
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
LRESULTWINAPIMsgProc(HWNDhWnd,UINTmsg,WPARAMwParam,LPARAMlParam)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
staticfloatfogStart=50;//线性雾化开始位置
DirectX示例--顶点雾化
staticfloatfogEnd=200;//线性雾化结束位置
DirectX示例--顶点雾化
staticfloatfogDensity=0.01f;//雾的浓度
DirectX示例--顶点雾化

DirectX示例--顶点雾化
switch(msg)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
caseWM_DESTROY:
DirectX示例--顶点雾化Cleanup();
DirectX示例--顶点雾化PostQuitMessage(
0);
DirectX示例--顶点雾化
return0;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
caseWM_KEYDOWN:
DirectX示例--顶点雾化
switch(wParam)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
case48://"0"键禁用雾化效果
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGENABLE,false);//禁用雾化
DirectX示例--顶点雾化
break;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
case49://"1"键,线性雾化
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGENABLE,true);//**雾化
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGVERTEXMODE,D3DFOG_LINEAR);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置线性雾化开始位置和结束位置
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGSTART,*(DWORD*)&fogStart);
DirectX示例--顶点雾化g_pd3dDevice
->SetRenderState(D3DRS_FOGEND,*(DWORD*)&fogEnd);
DirectX示例--顶点雾化
break;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
case50://"2"键,指数雾化
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGENABLE,true);//**雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置雾化混合因子计算公式
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGVERTEXMODE,D3DFOG_EXP);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置雾的浓度
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGDENSITY,*(DWORD*)&fogDensity);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
break;
DirectX示例--顶点雾化
DirectX示例--顶点雾化
case51://"3"键,指数平方雾化
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGENABLE,true);//**雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置雾化混合因子计算公式
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGVERTEXMODE,D3DFOG_EXP2);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//设置雾的浓度
DirectX示例--顶点雾化
g_pd3dDevice->SetRenderState(D3DRS_FOGDENSITY,*(DWORD*)&fogDensity);
DirectX示例--顶点雾化
break;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
returnDefWindowProc(hWnd,msg,wParam,lParam);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
//Desc:程序入口
DirectX示例--顶点雾化
//-----------------------------------------------------------------------------
DirectX示例--顶点雾化
INTWINAPIWinMain(HINSTANCEhInst,HINSTANCE,LPSTR,INT)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//注册窗口类
DirectX示例--顶点雾化DirectX示例--顶点雾化
WNDCLASSEXwc=DirectX示例--顶点雾化{sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,
DirectX示例--顶点雾化GetModuleHandle(NULL),NULL,NULL,NULL,NULL,
DirectX示例--顶点雾化L
"ClassName",NULL}
;
DirectX示例--顶点雾化RegisterClassEx(
&wc);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//创建窗口
DirectX示例--顶点雾化
HWNDhWnd=CreateWindow(L"ClassName",L"顶点雾化",
DirectX示例--顶点雾化WS_OVERLAPPEDWINDOW,
200,100,600,500,
DirectX示例--顶点雾化GetDesktopWindow(),NULL,wc.hInstance,NULL);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//初始化Direct3D
DirectX示例--顶点雾化
if(SUCCEEDED(InitD3D(hWnd)))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//创建场景图形
DirectX示例--顶点雾化
if(SUCCEEDED(InitGeometry()))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
//显示窗口
DirectX示例--顶点雾化
ShowWindow(hWnd,SW_SHOWDEFAULT);
DirectX示例--顶点雾化UpdateWindow(hWnd);
DirectX示例--顶点雾化
DirectX示例--顶点雾化
//进入消息循环
DirectX示例--顶点雾化
MSGmsg;
DirectX示例--顶点雾化ZeroMemory(
&msg,sizeof(msg));
DirectX示例--顶点雾化
while(msg.message!=WM_QUIT)
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化TranslateMessage(
&msg);
DirectX示例--顶点雾化DispatchMessage(
&msg);
DirectX示例--顶点雾化}

DirectX示例--顶点雾化
else
DirectX示例--顶点雾化DirectX示例--顶点雾化
DirectX示例--顶点雾化{
DirectX示例--顶点雾化Render();
//渲染图形
DirectX示例--顶点雾化
}

DirectX示例--顶点雾化}

DirectX示例--顶点雾化}

DirectX示例--顶点雾化}

DirectX示例--顶点雾化
DirectX示例--顶点雾化UnregisterClass(L
"ClassName",wc.hInstance);
DirectX示例--顶点雾化
return0;
DirectX示例--顶点雾化}

DirectX示例--顶点雾化