首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

VS2008 direct9.0 开发平台筹建————第一个D3D程序

2012-11-06 
VS2008 direct9.0 开发平台搭建————第一个D3D程序?原帖:http://blog.csdn.net/jxusthusiwen/article/detai

VS2008 direct9.0 开发平台搭建————第一个D3D程序

?原帖:http://blog.csdn.net/jxusthusiwen/article/details/6518499

一.VS2008中DirectX 9.0的配置方法

????1.? 在VS2008里面选择: ”工具”-->”选项”-->”项目和解决方案”-->”vc++目录”

???2. 在”显示以下内容的目录”下的下拉框中选择"包含文件"中插入新行输入

?????? 选择“E:/Include”

?? 3.在”显示以下内容的目录”下的下拉框中选择”库文件”插入新行并输入
????? ”E:/Lib/x86”
??? (? 没有双引号,具体看你的DirectX安装目录)

二.测试程序:

1.? 平台:windows 7? direct9.0? VS2008
2.?? 打开 vs2008 选择新建项目 ->win32项目 ,输入项目名,选择空项目。
向“源文件”添加文件main.cpp
输入以下代码:

Code:
  1. #include<d3d9.h> ????
  2. #include?<tchar.h> ????
  3. #pragma?comment(lib,?"d3d9.lib") ??#pragma?comment(lib,?"d3dx9.lib") ??
  4. ??#define?WINDOW_CLASS?_T("UGPDX") ??
  5. #define?WINDOW_NAME??_T("Blank?D3D?Window") ????
  6. ??//?Function?Prototypes... ??
  7. bool?InitializeD3D(HWND?hWnd,?bool?fullscreen); ??void?RenderScene(); ??
  8. void?Shutdown(); ????
  9. ??//?Direct3D?object?and?device. ??
  10. LPDIRECT3D9?g_D3D?=?NULL; ??LPDIRECT3DDEVICE9?g_D3DDevice?=?NULL; ??
  11. ????
  12. LRESULT?WINAPI?MsgProc(HWND?hWnd,?UINT?msg,?WPARAM?wParam,?LPARAM?lParam) ??{ ??
  13. ????switch(msg) ??????{ ??
  14. ????case?WM_DESTROY: ??????????PostQuitMessage(0); ??
  15. ????????return?0; ??????????break; ??
  16. ??????case?WM_KEYUP: ??
  17. ????????if(wParam?==?VK_ESCAPE)?PostQuitMessage(0); ??????????break; ??
  18. ????} ????
  19. ????return?DefWindowProc(hWnd,?msg,?wParam,?lParam); ??} ??
  20. ????
  21. int?WINAPI?WinMain(HINSTANCE?hInst,?HINSTANCE?prevhInst,?LPSTR?cmdLine,?int?show) ??{ ??
  22. ????//?Register?the?window?class ??????WNDCLASSEX?wc?=?{?sizeof(WNDCLASSEX),?CS_CLASSDC,?MsgProc,?0L,?0L, ??
  23. ????????GetModuleHandle(NULL),?NULL,?NULL,?NULL,?NULL, ??????????WINDOW_CLASS,?NULL?}; ??
  24. ????RegisterClassEx(&wc); ????
  25. ????//?Create?the?application's?window ??????HWND?hWnd?=?CreateWindow(WINDOW_CLASS,?WINDOW_NAME,?WS_OVERLAPPEDWINDOW, ??
  26. ????????100,?100,?640,?480,?GetDesktopWindow(),?NULL, ??????????wc.hInstance,?NULL); ??
  27. ??????//?Initialize?Direct3D ??
  28. ????if(InitializeD3D(hWnd,?false)) ??????{ ??
  29. ????????//?Show?the?window ??????????ShowWindow(hWnd,?SW_SHOWDEFAULT); ??
  30. ????????UpdateWindow(hWnd); ????
  31. ????????//?Enter?the?message?loop ??????????MSG?msg; ??
  32. ????????ZeroMemory(&msg,?sizeof(msg)); ????
  33. ????????while(msg.message?!=?WM_QUIT) ??????????{ ??
  34. ????????????if(PeekMessage(&msg,?NULL,?0U,?0U,?PM_REMOVE)) ??????????????{ ??
  35. ????????????????TranslateMessage(&msg); ??????????????????DispatchMessage(&msg); ??
  36. ????????????} ??????????????else??
  37. ????????????????RenderScene(); ??????????} ??
  38. ????} ????
  39. ????//?Release?any?and?all?resources. ??????Shutdown(); ??
  40. ??????//?Unregister?our?window. ??
  41. ????UnregisterClass(WINDOW_CLASS,?wc.hInstance); ??????return?0; ??
  42. } ????
  43. ??bool?InitializeD3D(HWND?hWnd,?bool?fullscreen) ??
  44. { ??????D3DDISPLAYMODE?displayMode; ??
  45. ??????//?Create?the?D3D?object. ??
  46. ????g_D3D?=?Direct3DCreate9(D3D_SDK_VERSION); ??????if(g_D3D?==?NULL)?return?false; ??
  47. ??????//?Get?the?desktop?display?mode. ??
  48. ????if(FAILED(g_D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,?&displayMode))) ??????????return?false; ??
  49. ??????//?Set?up?the?structure?used?to?create?the?D3DDevice ??
  50. ????D3DPRESENT_PARAMETERS?d3dpp; ??????ZeroMemory(&d3dpp,?sizeof(d3dpp)); ??
  51. ??????if(fullscreen) ??
  52. ????{ ??????????d3dpp.Windowed?=?FALSE; ??
  53. ????????d3dpp.BackBufferWidth?=?640; ??????????d3dpp.BackBufferHeight?=?480; ??
  54. ????} ??????else??
  55. ????????d3dpp.Windowed?=?TRUE; ??????d3dpp.SwapEffect?=?D3DSWAPEFFECT_DISCARD; ??
  56. ????d3dpp.BackBufferFormat?=?displayMode.Format; ????
  57. ????//?Create?the?D3DDevice ??????if(FAILED(g_D3D->CreateDevice(D3DADAPTER_DEFAULT,?D3DDEVTYPE_HAL,?hWnd, ??
  58. ????????D3DCREATE_SOFTWARE_VERTEXPROCESSING,?&d3dpp,?&g_D3DDevice))) ??????{ ??
  59. ????????return?false; ??????} ??
  60. ??????return?true; ??
  61. } ????
  62. ??void?RenderScene() ??
  63. { ??????//?Clear?the?backbuffer. ??
  64. ????g_D3DDevice->Clear(0,?NULL,?D3DCLEAR_TARGET,?D3DCOLOR_XRGB(0,0,0),?1.0f,?0); ????
  65. ????//?Begin?the?scene.??Start?rendering. ??????g_D3DDevice->BeginScene(); ??
  66. ??????//?End?the?scene.??Stop?rendering. ??
  67. ????g_D3DDevice->EndScene(); ????
  68. ????//?Display?the?scene. ??????g_D3DDevice->Present(NULL,?NULL,?NULL,?NULL); ??
  69. } ????
  70. ??void?Shutdown() ??
  71. { ??????if(g_D3DDevice?!=?NULL)?g_D3DDevice->Release(); ??
  72. ????if(g_D3D?!=?NULL)?g_D3D->Release(); ????
  73. ????g_D3DDevice?=?NULL; ??????g_D3D?=?NULL; ??
  74. } ??


安装错误解决:

问题1..
?d3d002/d3d002/main.cpp(46) : error C3861: “_T”: 找不到标识符
解决方法:加载 头文件:#include <tchar.h>

热点排行