• 大小: 46KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-06
  • 语言: 其他
  • 标签: 游戏编程  

资源简介

1、创建Win32工程,实现基本的程序框架。渲染逻辑、清除资源各占5分 2、读取高度图3、将高度图数据加载到缓冲区 4、在网格中使用高度图 5.正确渲染地形网格对象 6、计算网格法线7、设置材质 8、设置点光源。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

#pragma comment (lib“winmm.lib“)
#pragma comment (lib“d3d9.lib“)
#pragma comment (lib“d3dx9.lib“)
LPDIRECT3D9 g_pD3D;
LPDIRECT3DDEVICE9 g_pD3DDevice;

#include “Terrain.h“
CTerrain *g_pTerrain;


#define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }


LRESULT CleanUp()
{
SAFE_DELETE(g_pTerrain);
SAFE_RELEASE(g_pD3DDevice);
SAFE_RELEASE(g_pD3D);

return S_OK;
}



LRESULT SetLight(int nD3DVECTOR *vDir)
{


return D3D_OK;
}

LRESULT Update()
{

float fTimeNow=timeGetTime()/1000.0f;

D3DXMATRIX matViewmatWorldmatRotXmatRotYmatRotZmatProj;
D3DXMatrixRotationX(&matRotXD3DX_PI*0.5f*fTimeNow);
D3DXMatrixRotationY(&matRotYD3DX_PI*0.5f*fTimeNow);
D3DXMatrixRotationZ(&matRotZD3DX_PI*0.5f*fTimeNow);
D3DXMatrixMultiply(&matWorld&matRotX&matRotY);

D3DXMatrixMultiply(&matWorld&matWorld&matRotY);


D3DXMatrixLookAtLH(&matView&D3DXVECTOR3(300*sinf(fTimeNow*D3DX_PI*0.1f)
200300*cosf(fTimeNow*D3DX_PI*0.1f))
&D3DXVECTOR3(0500)
&D3DXVECTOR3(010));

D3DXMatrixPerspectiveFovLH(&matProjD3DX_PI/41.333f1.0f5000);

g_pD3DDevice->SetTransform(D3DTS_VIEW&matView);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION&matProj);


D3DVECTOR vDir={cosf(fTimeNow)-0.2fsinf(fTimeNow)};
SetLight(0&vDir);

return D3D_OK;
}

LRESULT Render()
{ //顶点数据

g_pD3DDevice->Clear(00D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER0x001.0f0); //清除背景
g_pD3DDevice->BeginScene(); //开始绘制
//绘制原始单元

Update(); 
g_pTerrain->Render();  

g_pD3DDevice->EndScene(); //结束绘制
g_pD3DDevice->Present(0000); //翻屏
return D3D_OK;
}


//初始化函数,创建Direct3D和设备对象
LRESULT InitD3D(HWND hwnd)
{
g_pD3D= Direct3DCreate9(D3D_SDK_VERSION); //创建Direct3D9对象

D3DPRESENT_PARAMETERS d3dpp; //设备翻屏参数
memset(&d3dpp0sizeof(d3dpp)); //初始化
d3dpp.BackBufferCount=1; //后备缓冲区数量
d3dpp.SwapEffect= D3DSWAPEFFECT_DISCARD; //交换模式
d3dpp.hDeviceWindow=hwnd;
d3dpp.Windowed=TRUE; //使用窗口模式
d3dpp.EnableAutoDepthStencil=TRUE;
d3dpp.AutoDepthStencilFormat=D3DFMT_D16;
HRESULT ret=
g_pD3D->CreateDevice(D3DADAPTER_DEFAULT //创建默认物理设备相关的Direct3DDevice对象
D3DDEVTYPE_HAL //使用硬件抽象层
hwnd //显示窗口
D3DCREATE_SOFTWARE_VERTEXPROCESSING //软件处理顶点
&d3dpp //设备相关参数的描述
&g_pD3DDevice); //要保存对象地址的指针的地址
if(ret!=D3D_OK)
{ MessageBox(hwnd“创建创建Direct3DDeviece对象失败!““创建Direct3DDeviece!“
MB_OK|MB_IConerror);
}


//采样方式
g_pD3DDevice->SetSamplerState(0 D3DSAMP_MAGFILTER  D3DTEXF_ANISOTROPIC);
g_pD3DDevice->SetSamplerState(0 D3DSAMP_MINFILTER  D3DTEXF_ANISOTROPIC);
g_pD3DDevice->SetSamplerState(0 D3DSAMP_MIPFILTER  D3DTEXF_LINEAR);

g_pD3DDevice->SetRenderState(D3DRS_LIGHTINGTRUE);


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      20941  2004-03-28 22:48  8.Normal\bin\grass.jpg

     文件      47734  2005-09-07 09:47  8.Normal\bin\Terrain_256.bmp

     文件        905  2008-04-30 10:12  8.Normal\src\D3DStart.sln

    ..A..H.      9216  2008-04-30 12:29  8.Normal\src\D3DStart.suo

     文件       5133  2008-04-30 11:19  8.Normal\src\D3DStart.vcproj

     文件       2579  2008-04-30 11:22  8.Normal\src\Debug\BuildLog.htm

     文件       5351  2008-04-30 11:50  8.Normal\src\Main.cpp

     文件       2658  2008-04-30 12:29  8.Normal\src\Terrain.cpp

     文件       1031  2008-04-30 11:21  8.Normal\src\Terrain.h

     目录          0  2008-05-04 14:19  8.Normal\src\Debug

     目录          0  2008-05-04 14:19  8.Normal\bin

     目录          0  2008-05-04 14:19  8.Normal\src

     目录          0  2008-05-04 14:19  8.Normal

----------- ---------  ---------- -----  ----

                95548                    13


评论

共有 条评论