[转帖]DirectX9.0的初级教学
<span id="TopicDetail_DataList1__ctl0_lblPostBody"> <br/><br/>编程环境VC++6。6 <br/>DirectX 9.0 SDK 没有可以去微软官方网站下载 <br/>进入C++6。0单击“文件”菜单,选“新建”,在“新建”对话框中选Win32 Application <br/>输入文件名为Mygame1 <br/>以下选择空项目,完成既可。 <br/>这时新建文件,选择C++ SOURCE 文件。名为本Mygame1 <br/><br/><br/>#include <d3d9.h> <br/><br/>#pragma comment(lib,"d3d9.lib") ///////////缺少这句编译不能通过 <br/><br/>LPDIRECT3D9 g_pD3D = NULL; <br/>LPDIRECT3DDEVICE9 g_pD3DDevice = NULL; <br/><br/>HRESULT InitialiseD3D(HWND hWnd) <br/>{ <br/> //创建D3D对象,并获得D3D接口指针 <br/> <br/> g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); <br/> if(g_pD3D == NULL) <br/> { <br/> return E_FAIL; <br/> } <br/><br/> //获得当前的显示模式 <br/> D3DDISPLAYMODE d3ddm; <br/> if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm))) <br/> { <br/> return E_FAIL; <br/> } <br/><br/><br/> D3DPRESENT_PARAMETERS d3dpp; <br/> ZeroMemory(&d3dpp, sizeof(d3dpp)); <br/><br/> <br/> //创建窗口模式的D3D <br/> <br/> d3dpp.Windowed = TRUE; <br/> d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; <br/> d3dpp.BackBufferFormat = d3ddm.Format; <br/><br/> //创建D3D的设备对象,并获取接口IDirect3DDevice9的指针 <br/> if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, <br/> D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, <br/> &g_pD3DDevice))) <br/> { <br/> return E_FAIL; <br/> } <br/> <br/> return S_OK; <br/>} <br/><br/>void Render() <br/>{ <br/> if(g_pD3DDevice == NULL) <br/> { <br/> return; <br/> } <br/><br/> //用绿色清除后备缓存 <br/> g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0); <br/> <br/> //开始屏幕操作 <br/> g_pD3DDevice->BeginScene(); <br/> <br/> //我们将在中间完成所有的3D渲染 <br/> <br/> //结束屏幕操作 <br/> g_pD3DDevice->EndScene(); <br/> <br/> <br/> //翻转后备为屏幕,使画面显示在屏幕上 <br/> g_pD3DDevice->Present(NULL, NULL, NULL, NULL); <br/>} <br/><br/>void CleanUp() <br/>{ <br/> if(g_pD3DDevice != NULL) <br/> { <br/> g_pD3DDevice->Release(); <br/> g_pD3DDevice = NULL; <br/> } <br/><br/> if(g_pD3D != NULL) <br/> { <br/> g_pD3D->Release(); <br/> g_pD3D = NULL; <br/> } <br/>} <br/><br/>void GameLoop() <br/>{ <br/> //进入游戏循环 <br/> MSG msg; <br/> BOOL fMessage; <br/><br/> PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE); <br/> <br/> while(msg.message != WM_QUIT) <br/> { <br/> fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE); <br/><br/> if(fMessage) <br/> { <br/> //处理消息 <br/> TranslateMessage(&msg); <br/> DispatchMessage(&msg); <br/> } <br/> else <br/> { <br/> //没有消息时,处理渲染图象 <br/> Render(); <br/> } <br/><br/> } <br/>} <br/><br/>//Windows消息处理机制,用来处理各种WINDOWS消息,包括常用的键盘消息 <br/>LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) <br/>{ <br/> switch(msg) <br/> { <br/> case WM_DESTROY: <br/> PostQuitMessage(0); <br/> return 0; <br/> break; <br/> case WM_KEYUP: <br/> switch (wParam) <br/> { <br/> case VK_ESCAPE: <br/> //按“ESC”键退出 <br/> DestroyWindow(hWnd); <br/> return 0; <br/> break; <br/> } <br/> break; <br/><br/> } <br/><br/> return DefWindowProc(hWnd, msg, wParam, lParam); <br/>} <br/><br/>//应用程序入口主函数,相当于C语言的main()函数 <br/>INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT) <br/>{ <br/> //注册窗口类 <br/> WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, WinProc, 0L, 0L, <br/> GetModuleHandle(NULL), NULL, NULL, NULL, NULL, <br/> "DX9", NULL}; <br/> RegisterClassEx(&wc); <br/><br/> //创建应用程序窗口 <br/> HWND hWnd = CreateWindow("DX9", "mygame1", <br/> WS_OVERLAPPEDWINDOW, 50, 50, 500, 500, <br/> GetDesktopWindow(), NULL, wc.hInstance, NULL); <br/><br/> //Initialize Direct3D <br/> if(SUCCEEDED(InitialiseD3D(hWnd))) <br/> { <br/> //显示窗口 <br/> ShowWindow(hWnd, SW_SHOWDEFAULT); <br/> UpdateWindow(hWnd); <br/><br/> //开始游戏并循环 <br/> GameLoop(); <br/> } <br/> <br/> CleanUp(); <br/><br/> UnregisterClass("DX9", wc.hInstance); <br/> <br/> return 0; <br/>} </span> <span id="TopicDetail_DataList1__ctl0_lblPostBody">以前的教程都是画一个空间三角形,今天我们用D3D9来画多边行。 <br/>//-----------------------------X <br/>多增加的代码在这两个标志的中间部分 <br/>//X----------------------------- <br/>#include <d3d9.h> <br/><br/>#pragma comment(lib,"d3d9.lib") ///////////缺少这句编译不能通过 <br/><br/>LPDIRECT3D9 g_pD3D = NULL; <br/>LPDIRECT3DDEVICE9 g_pD3DDevice = NULL; <br/>//创建顶点缓存,D3D采用“可变形顶点格式(FVF)”的技术, <br/>//除顶点坐标外,还包括顶点的法线、颜色、纹理坐标等数据 <br/>LPDIRECT3DVERTEXBUFFER9 g_pVB;//顶点缓存的接口指针 <br/>//定义FVF的顶点结构 <br/>//------------------------------------------------------X <br/>struct CUSTOMVERTEX <br/>{ <br/>float x,y,z,rhw;//顶点坐标 <br/>DWORD color;//顶点颜色 <br/>}; <br/>//定义FVF,用到坐标和颜色 <br/>#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE) <br/><br/>////X------------------------------------X <br/>void InitGeometry() <br/>{ <br/>//建立顶点坐标模型 <br/>CUSTOMVERTEX vertices[]= <br/> { <br/>{ 50.0f, 250.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0) }, <br/>{ 150.0f, 150.0f, -0.5f, 1.0f,D3DCOLOR_XRGB(0, 255, 0)}, <br/>{ 270.0f, 350.5f, 150.0f, 1.0f, D3DCOLOR_XRGB(0,0, 255) }, <br/>{ 50.0f, 100.5f, 50.0f, 1.0f, D3DCOLOR_XRGB(0,255, 255) }, <br/>{ 150.0f, 250.0f, 70.5f, 1.0f, D3DCOLOR_XRGB(255, 255, 255) }, <br/>{ 50.0f, 250.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0) } <br/>}; // x, y, z, rhw, color <br/> <br/>//创建顶点缓存 <br/>g_pD3DDevice->CreateVertexBuffer( <br/>sizeof(vertices), <br/>0,D3DFVF_CUSTOMVERTEX, <br/>D3DPOOL_DEFAULT,&g_pVB,NULL); <br/>//把顶点数据输入缓存区 <br/>void* pVertices; <br/>g_pVB->Lock(0,sizeof(vertices),(void**)&pVertices,0); <br/>memcpy(pVertices,vertices,sizeof(vertices)); <br/>g_pVB->Unlock(); <br/><br/><br/><br/><br/>} <br/>//X----------------------------- <br/>HRESULT InitialiseD3D(HWND hWnd) <br/>{ <br/> //创建D3D对象,并获得D3D接口指针 <br/> <br/> g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); <br/> if(g_pD3D == NULL) <br/> { <br/> return E_FAIL; <br/> } <br/><br/><br/> D3DPRESENT_PARAMETERS d3dpp; <br/> ZeroMemory(&d3dpp, sizeof(d3dpp)); <br/><br/> <br/> //创建窗口模式的D3D <br/> <br/> d3dpp.Windowed = TRUE; <br/> d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; <br/> d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//d3ddm.Format <br/> <br/> //创建D3D的设备对象,并获取接口IDirect3DDevice9的指针 <br/> if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, <br/> D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, <br/> &g_pD3DDevice))) <br/> { <br/> return E_FAIL; <br/> } <br/> <br/> return S_OK; <br/>} <br/><br/>void Render() <br/>{ <br/> if(g_pD3DDevice == NULL) <br/> { <br/> return; <br/> } <br/>//InitGeometry(); <br/> //用黑色清除后备缓存 <br/> g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); <br/> <br/> //开始屏幕操作 <br/>g_pD3DDevice->BeginScene(); <br/>//我们将在中间完成所有的3D渲染 <br/>///-------------------------------------------------X <br/> //设置自定义的FVF <br/>g_pD3DDevice->SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX)); <br/> //绑定顶点缓存给设备数据源 <br/>g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); <br/> //绘制图形,参数1为图形格式,参数3为所绘个数 <br/>g_pD3DDevice->DrawPrimitive(D3DPT_LINESTRIP ,0, 5);//空间画五条线 <br/> <br/> //X-------------------------------------------- <br/> <br/> <br/> //结束屏幕操作 <br/> g_pD3DDevice->EndScene(); <br/> <br/> <br/> //翻转后备为屏幕,使画面显示在屏幕上 <br/> g_pD3DDevice->Present(NULL, NULL, NULL, NULL); <br/>} <br/><br/>void CleanUp()////释放清除所有设备 <br/>{ <br/>if(g_pVB!=NULL) <br/>{ g_pVB->Release(); <br/>g_pVB=NULL; <br/>} <br/> <br/> if(g_pD3DDevice != NULL) <br/> { <br/> g_pD3DDevice->Release(); <br/> g_pD3DDevice = NULL; <br/> } <br/><br/> if(g_pD3D != NULL) <br/> { <br/> g_pD3D->Release(); <br/> g_pD3D = NULL; <br/> } <br/>} <br/><br/>void GameLoop() <br/>{ <br/> InitGeometry();///载入数据 <br/> //进入游戏循环 <br/> MSG msg; <br/> BOOL fMessage; <br/><br/> PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE); <br/> <br/> while(msg.message != WM_QUIT) <br/> { <br/> fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE); <br/><br/> if(fMessage) <br/> { <br/> //处理消息 <br/> TranslateMessage(&msg); <br/> DispatchMessage(&msg); <br/> } <br/> else <br/> { <br/> //没有消息时,处理渲染图象 <br/> Render(); <br/> } <br/><br/> } <br/>} <br/><br/>//Windows消息处理机制,用来处理各种WINDOWS消息,包括常用的键盘消息 <br/>LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) <br/>{ <br/> switch(msg) <br/> { <br/> case WM_DESTROY: <br/> PostQuitMessage(0); <br/> return 0; <br/> break; <br/> case WM_KEYUP: <br/> switch (wParam) <br/> { <br/> case VK_ESCAPE: <br/> //按“ESC”键退出 <br/> DestroyWindow(hWnd); <br/> return 0; <br/> break; <br/> } <br/> break; <br/><br/> } <br/><br/> return DefWindowProc(hWnd, msg, wParam, lParam); <br/>} <br/><br/>//应用程序入口主函数,相当于C语言的main()函数 <br/>INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT) <br/>{ <br/> //注册窗口类 <br/> WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, WinProc, 0L, 0L, <br/> GetModuleHandle(NULL), NULL, NULL, NULL, NULL, <br/> "DX9", NULL}; <br/> RegisterClassEx(&wc); <br/><br/> //创建应用程序窗口 <br/> HWND hWnd = CreateWindow("DX9", "mygame1", <br/> WS_OVERLAPPEDWINDOW, 50, 50, 500, 500, <br/> GetDesktopWindow(), NULL, wc.hInstance, NULL); <br/><br/><br/> if(SUCCEEDED(InitialiseD3D(hWnd))) <br/> { <br/> //显示窗口 <br/> ShowWindow(hWnd, SW_SHOWDEFAULT); <br/> UpdateWindow(hWnd); <br/><br/> //开始游戏并循环 <br/> GameLoop(); <br/> } <br/> <br/> CleanUp(); <br/><br/> UnregisterClass("DX9", wc.hInstance); <br/> <br/> return 0; <br/>} <br/>如果以上程序运行成功的话,会在窗口内画出5个边的图形! <br/>初学者试着可以修改 <br/>g_pD3DDevice->DrawPrimitive(D3DPT_LINESTRIP ,0, 5);//空间画五条线 <br/>的参数,使其画出两个三角行表面。 <br/><br/><img id="PicPost" title="您可以使用滑鼠对图片进行放大和缩小!" src="http://gd.91.com/bbs/imgnew/2004/6/25/1088158301762.jpg" border="0" style="CURSOR: hand; ZOOM: 90%;" alt=""/></span> <span id="TopicDetail_DataList1__ctl0_lblPostBody">//该程序模拟彩色下雨特效。初学者如有疑问在下面跟帖。初学者可以自己修改颜色。 <br/><br/>#include <Windows.h> <br/>#include <mmsystem.h> <br/>#include <d3d9.h> <br/>#include <d3dx9.h> <br/>#pragma comment(lib,"d3d9.lib") ///////////缺少这句编译不能通过 <br/>#pragma comment(lib,"d3dx9dt.lib") <br/>#pragma comment(lib,"winmm.lib") <br/>LPDIRECT3D9 g_pD3D = NULL; <br/>LPDIRECT3DDEVICE9 g_pD3DDevice = NULL; <br/>//创建顶点缓存,D3D采用“可变形顶点格式(FVF)”的技术, <br/>//除顶点坐标外,还包括顶点的法线、颜色、纹理坐标等数据 <br/>LPDIRECT3DVERTEXBUFFER9 g_pVB=NULL;//顶点缓存的接口指针 <br/>//定义FVF的顶点结构 <br/><br/>struct CUSTOMVERTEX <br/>{ <br/>float x,y,z;//顶点坐标 <br/>DWORD color;//顶点颜色 <br/>}my_ex;////定义雨滴数组 <br/>//定义FVF,用到坐标和颜色 <br/>#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE) <br/><br/><br/><br/>void SetupMatrices() <br/>{ <br/><br/>D3DXVECTOR3 eye(0.0f,0.0f,-42.0f);///观察者视点位置 <br/>D3DXVECTOR3 lookat(0.0f,0.0f,0.0f);//观察者视线方向 <br/>D3DXVECTOR3 up(0.0f,1.0f,0.0f);//观察者头顶方向,也称上方向 <br/>D3DXMATRIXA16 matView; <br/>///设置可视视角矩阵 <br/>D3DXMatrixLookAtLH(&matView,&eye,&lookat,&up); <br/>///把视角矩阵设置到渲染环境 <br/> g_pD3DDevice->SetTransform(D3DTS_VIEW,&matView); <br/><br/><br/>D3DXMATRIXA16 matProj; <br/>//设置透视投影矩阵 <br/>D3DXMatrixPerspectiveFovLH(&matProj,//结果矩阵 <br/>D3DX_PI/4,//可视弧度范围 <br/>1.0f,//屏幕高宽比 <br/>1.0f,//最近观测距离 <br/>100.0f);//最远观察距离 <br/><br/> ///把透视投影矩阵设置到渲染护环境 <br/> g_pD3DDevice->SetTransform(D3DTS_PROJECTION,&matProj); <br/><br/>} <br/>void InitGeometry() <br/>{ <br/>int i; <br/>for(i=0;i<150;i+=2) <br/>{ <br/>my_ex.y --; <br/>my_ex.y --; <br/> if(my_ex.y <-20) <br/>{ <br/> <br/> my_ex.x=my_ex.x =rand()%40-20; <br/> my_ex.y=10; <br/> my_ex.z =my_ex.z =rand()%40-20; <br/> my_ex.color =D3DCOLOR_XRGB(rand()%255, 255, 255); <br/> <br/> my_ex.y=13; <br/> my_ex.color =D3DCOLOR_XRGB(255, rand()%255, 255); <br/><br/>} <br/>} <br/><br/>//创建顶点缓存 <br/>g_pD3DDevice->CreateVertexBuffer( <br/>sizeof(my_ex),// <br/>0,D3DFVF_CUSTOMVERTEX, <br/>D3DPOOL_DEFAULT,&g_pVB,NULL); <br/>//把顶点数据输入缓存区 <br/>void* pVertices; <br/>g_pVB->Lock(0,sizeof(my_ex),(void**)&pVertices,0); <br/>memcpy(pVertices,my_ex,sizeof(my_ex)); <br/>g_pVB->Unlock(); <br/><br/><br/><br/><br/>} <br/><br/>HRESULT InitialiseD3D(HWND hWnd) <br/>{ <br/> //创建D3D对象,并获得D3D接口指针 <br/> <br/> g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); <br/> if(g_pD3D == NULL) <br/> { <br/> return E_FAIL; <br/> } <br/><br/><br/> D3DPRESENT_PARAMETERS d3dpp; <br/> ZeroMemory(&d3dpp, sizeof(d3dpp)); <br/><br/> <br/> //创建窗口模式的D3D <br/> <br/> d3dpp.Windowed = TRUE; <br/> d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; <br/> d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; <br/><br/> //创建D3D的设备对象,并获取接口IDirect3DDevice9的指针 <br/> if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, <br/> D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, <br/> &g_pD3DDevice))) <br/> { <br/> return E_FAIL; <br/> } <br/> g_pD3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE); <br/> g_pD3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); <br/><br/> return S_OK; <br/>} <br/><br/>void Render() <br/>{ <br/> <br/><br/> //用黑色清除后备缓存 <br/> g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);// <br/> <br/> //开始屏幕操作 <br/>g_pD3DDevice->BeginScene(); <br/>//我们将在中间完成所有的3D渲染 <br/><br/> InitGeometry(); <br/> SetupMatrices();///设置相关矩阵 <br/><br/><br/>g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); <br/> //设置自定义的FVF <br/>g_pD3DDevice->SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX)); <br/> //绑定顶点缓存给设备数据源 <br/><br/><br/> //绘制图形,参数1为图形格式,参数3为所绘个数 <br/>g_pD3DDevice->DrawPrimitive(D3DPT_LINELIST ,0, 75);//D3DPT_LINESTRIP空间画五条线 <br/> <br/><br/> <br/> <br/> //结束屏幕操作 <br/> g_pD3DDevice->EndScene(); <br/> <br/> <br/> //翻转后备为屏幕,使画面显示在屏幕上 <br/> g_pD3DDevice->Present(NULL, NULL, NULL, NULL); <br/>} <br/><br/>void CleanUp()////释放清除所有设备 <br/>{ <br/>if(g_pVB!=NULL) <br/>{ g_pVB->Release(); <br/>g_pVB=NULL; <br/>} <br/> <br/> if(g_pD3DDevice != NULL) <br/> { <br/> g_pD3DDevice->Release(); <br/> g_pD3DDevice = NULL; <br/> } <br/><br/> if(g_pD3D != NULL) <br/> { <br/> g_pD3D->Release(); <br/> g_pD3D = NULL; <br/> } <br/>} <br/><br/>void GameLoop() <br/>{ <br/> // InitGeometry();///载入数据 <br/> //进入游戏循环 <br/> MSG msg; <br/> BOOL fMessage; <br/><br/> PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE); <br/> <br/> while(msg.message != WM_QUIT) <br/> { <br/> fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE); <br/><br/> if(fMessage) <br/> { <br/> //处理消息 <br/> TranslateMessage(&msg); <br/> DispatchMessage(&msg); <br/> } <br/> else <br/> { <br/> //没有消息时,处理渲染图象 <br/> Render(); <br/> } <br/><br/> } <br/>} <br/><br/>//Windows消息处理机制,用来处理各种WINDOWS消息,包括常用的键盘消息 <br/>LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) <br/>{ <br/> switch(msg) <br/> { <br/> case WM_DESTROY: <br/> PostQuitMessage(0); <br/> return 0; <br/> break; <br/><br/><br/> case WM_KEYUP: <br/> switch (wParam) <br/> { <br/> case VK_ESCAPE: <br/> //按“ESC”键退出 <br/> DestroyWindow(hWnd); <br/> return 0; <br/> break; <br/> } <br/> break; <br/><br/> } <br/><br/> return DefWindowProc(hWnd, msg, wParam, lParam); <br/>} <br/><br/>//应用程序入口主函数,相当于C语言的main()函数 <br/>INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT) <br/>{ <br/> //注册窗口类 <br/> WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, WinProc, 0L, 0L, <br/> GetModuleHandle(NULL), NULL, NULL, NULL, NULL, <br/> "DX9", NULL}; <br/> RegisterClassEx(&wc); <br/><br/> //创建应用程序窗口 <br/> HWND hWnd = CreateWindow("DX9", "mygame1", <br/> WS_OVERLAPPEDWINDOW, 50, 50, 500, 500, <br/> GetDesktopWindow(), NULL, wc.hInstance, NULL); <br/><br/>////////////////////////////////雨水坐标初始化 <br/> for(int i=0;i<150;i++) <br/>{ <br/>my_ex.x=my_ex.x =rand()%40-20; <br/>my_ex.y=rand()%40-20; <br/>my_ex.z =my_ex.z =rand()%40-20; <br/>my_ex.color =D3DCOLOR_XRGB(rand()%255, 255, 255); <br/>i++; <br/><br/>my_ex.y=my_ex.y-3; <br/><br/>my_ex.color =D3DCOLOR_XRGB(255, rand()%255, 255); <br/>} <br/><br/> if(SUCCEEDED(InitialiseD3D(hWnd))) <br/> { <br/> //显示窗口 <br/> ShowWindow(hWnd, SW_SHOWDEFAULT); <br/> UpdateWindow(hWnd); <br/><br/> //开始游戏并循环 <br/> GameLoop(); <br/> } <br/> <br/> CleanUp(); <br/><br/> UnregisterClass("DX9", wc.hInstance); <br/> <br/> return 0; <br/>}<img id="PicPost" title="您可以使用滑鼠对图片进行放大和缩小!" src="http://gd.91.com/bbs/imgnew/2004/7/4/1088940181467.jpg" border="0" style="CURSOR: hand;" alt=""/></span> 支持~~
页:
[1]