已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DX初学咋练-配置环境及初次运行(vs2010/dx9.0) 纠结了两天了 dx环境配置及运行一个小例子 终于解决了 新建一个 win32项目 选择 “空项目”(如果给建成win32控制台的项目了 那就要更改一些其他的属性 最后说) 点击项目-属性-VC+目录 添加包含目录和库目录$(DXSDK_DIR)Include$(DXSDK_DIR)Libx86(添加的时候 不要忘了加英文标点符号; 例如 原来是$(VCInstallDir)include;$(VCInstallDir)atlmfcinclude;$(WindowsSdkDir)include;$(FrameworkSDKDir)include在这个的最后添加 ;$(DXSDK_DIR)Include ) 然后再 点击连接器-输入 在附加依赖项上添加 需要的.lib到这就配置完了下面是在 /page/M0/S655/655240.html 上找的一个dx 的例子。 1 #include 2 #include 3 #include 4 LPDIRECT3D9 g_pD3D; 5 LPDIRECT3DDEVICE9 g_pd3dDevice; 6 LPDIRECT3DVERTEXBUFFER9 g_pVB; 7 struct CUSTOMVERTEX 8 FLOAT x, y, z; 9 DWORD color; 10 ; 11 #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE) 12 HRESULT InitObject() 13 14 CUSTOMVERTEX triangle = 15 16 -1.0f,-1.0f, 0.0f, 0xffff0000, , 17 1.0f,-1.0f, 0.0f, 0xff0000ff, , 18 0.0f, 1.0f, 0.0f, 0xffffffff, 19 ; 20 if (FAILED(g_pd3dDevice-CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL) 21 return E_FAIL; 22 VOID* pVertices; 23 if (FAILED(g_pVB-Lock(0,sizeof(triangle), &pVertices, 0) 24 return E_FAIL; 25 memcpy(pVertices, triangle, sizeof(triangle); 26 g_pVB-Unlock(); 27 return S_OK; 28 29 HRESULT InitD3D(HWND hWnd) 30 31 g_pD3D = Direct3DCreate9(D3D_SDK_VERSION); 32 if (NULL = g_pD3D) 33 return E_FAIL; 34 D3DPRESENT_PARAMETERS d3dpp; 35 ZeroMemory(&d3dpp, sizeof(d3dpp); 36 d3dpp.Windowed = TRUE; 37 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; 38 d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; 39 if(FAILED( g_pD3D-CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, 40 hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, 41 &d3dpp, &g_pd3dDevice) 42 43 return E_FAIL; 44 45 g_pd3dDevice-SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); 46 / Turn off D3D lighting, since we are providing our own vertex colors 47 g_pd3dDevice-SetRenderState( D3DRS_LIGHTING, FALSE ); 48 if (FAILED(InitObject() 49 return E_FAIL; 50 return S_OK; 51 52 void SetupMatrices() 53 54 D3DXMATRIX matWorld; 55 UINT iTime = timeGetTime() % 1000; 56 FLOAT fAngle = iTime * ( 2.0f * D3DX_PI ) / 1000.0f; 57 D3DXMatrixRotationY(&matWorld, fAngle); 58 g_pd3dDevice-SetTransform(D3DTS_WORLD, &matWorld); 59 D3DXVECTOR3 vEyePt(0.0f, 3.0f, -5.0f); 60 D3DXVECTOR3 vLookAtPt(0.0f, 0.0f, 0.0f); 61 D3DXVECTOR3 vUp(0.0f, 1.0f, 0.0f); 62 D3DXMATRIXA16 matView; 63 D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookAtPt, &vUp); 64 g_pd3dDevice-SetTransform(D3DTS_VIEW, &matView); 65 D3DXMATRIX matPoj; 66 D3DXMatrixPerspectiveFovLH(&matPoj, D3DX_PI/4, 1.0f, 1.0f, 100.0f); 67 g_pd3dDevice-SetTransform(D3DTS_PROJECTION, &matPoj); 68 69 void Render() 70 71 g_pd3dDevice-Clear(0,NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0); 72 g_pd3dDevice-BeginScene(); 73 SetupMatrices(); 74 g_pd3dDevice-SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX); 75 g_pd3dDevice-SetFVF(D3DFVF_CUSTOMVERTEX); 76 g_pd3dDevice-DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); 77 g_pd3dDevice-EndScene(); 78 g_pd3dDevice-Present(NULL, NULL, NULL, NULL); 79 80 void Cleanup() 81 82 if (g_pd3dDevice) 83 g_pd3dDevice-Release(); 84 if (g_pD3D) 85 g_pD3D-Release(); 86 if (g_pVB) 87 g_pVB-Release(); 88 89 LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 90 91 switch (msg) 92 93 case WM_DESTROY: 94 PostQuitMessage(0); 95 return 0; 96 case WM_PAINT: 97 ValidateRect(hWnd, NULL); 98 return 0; 99 100 return DefWindowProc(hWnd, msg, wParam, lParam);101 102 INT WINAPI WinMain(_in HINSTANCE hInstance, _in_opt HINSTANCE hPrevInstance, _in_opt LPSTR lpCmdLine, _in int nShowCmd )103 104 WNDCLASSEX wc = sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0, 0, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, LDirect3D, NULL; 105 RegisterClassEx(&wc); 106 / Create the application window 107 HWND hWnd = CreateWindow(LDirect3D, 108 LLearn, WS_OVERLAPPEDWINDOW, 109 100, 100, 300, 300, 110 GetDesktopWindow(), 111 NULL, wc.hInstance, NULL); 112 /113 ShowWindow(hWnd, SW_SHOW); 114 if (SUCCEEDED(InitD3D(hWnd) 115 116 ShowWindow(hWnd, SW_SHOWDEFAULT); 117 UpdateWindow(hWnd); 118 MSG msg; 119 ZeroMemory(&msg, sizeof(msg); 120 while (msg.message != WM_QUIT) 121 122 if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) 123 124 TranslateMessage(&msg); 125 DispatchMessage(&msg); 126 127 else 128 Render(); 129 130 131 UnregisterClass( LDirect3D, wc.hInstance ); 13
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江丽水松阳县人民政府研究室等事业单位招聘16名高层次人才易考易错模拟试题(共500题)试卷后附参考答案
- 兼职工作签合同协议
- 公司正规付款协议书
- 校园事故责任协议书
- 兼职讲师聘用协议书
- 广西南宁市江南区经济贸易和信息化局招聘易考易错模拟试题(共500题)试卷后附参考答案
- 杆塔土地使用协议书
- 中国质量协会协议书
- 广东省龙门县人民政府驻广州办事处公开招聘人员招聘易考易错模拟试题(共500题)试卷后附参考答案
- 广东公路管理局事业单位招考12人易考易错模拟试题(共500题)试卷后附参考答案
- 烘培师傅劳动合同范本
- 2025年普法考试试题及答案
- 酒店采摘活动策划方案
- 2025下半年海南万宁市事业单位招聘工作人员146人(第1号)考试笔试参考题库附答案解析
- 食堂消防安全知识培训
- 中学生防范黄赌毒演讲
- 2026年中国蓝莓种植项目经营分析报告
- 安全生产领导机构
- 人力资源管理试题库及答案
- 2025江苏苏州新主城物业服务有限公司、苏州新区枫桥万厦物业管理有限公司招聘5人考试笔试备考题库及答案解析
- 2025年国家公务员录用考试公共基础知识全真模拟试题及答案(共八套)
评论
0/150
提交评论