DX初学咋练__配置环境及初次运行(vs2010_dx9.0).doc_第1页
DX初学咋练__配置环境及初次运行(vs2010_dx9.0).doc_第2页
DX初学咋练__配置环境及初次运行(vs2010_dx9.0).doc_第3页
DX初学咋练__配置环境及初次运行(vs2010_dx9.0).doc_第4页
DX初学咋练__配置环境及初次运行(vs2010_dx9.0).doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论