日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于vs2017如何配置和运行龙书DX9案例

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于vs2017如何配置和运行龙书DX9案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于vs2017如何配置和運行龍書DX9案例

首先是運行環(huán)境

  • Visual Studio 2017(我用的社區(qū)版)
  • DXSDK_Jun10(下載地址)

下面就是配置環(huán)境了

-1、 下載的DXSDK_Jun10.exe雙擊進(jìn)行安裝,安裝完畢后會有一個文件夾:Microsoft DirectX SDK (June 2010)(我使用的是默認(rèn)安裝文件夾位置在:C:\Program Files (x86) ) ,Microsoft DirectX SDK (June 2010)就是direct9 的運行庫了(當(dāng)然其中也包括DX10、DX11的運行庫)
- 2、運行庫有了就開始配置吧,打開vs2017, 文件新建項目選擇Visual C++ 點擊空項目,如下圖
-
- 3、項目創(chuàng)建完成后,右鍵點擊項目,選擇屬性
-
-
- 4、點擊VC++目錄,在包含目錄選擇編輯導(dǎo)入包含目錄,我的路徑是(C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
-
-
- 然后選擇庫目錄點擊編輯導(dǎo)入目錄我的目錄是(C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86
-
-
- 5、然后在選擇“連接器”“輸入”中的“附加依賴項”編輯,輸入d3d9.lib d3dx9.lib winmm.lib
-
-
- 6、點擊應(yīng)用 確定,這里環(huán)境就已經(jīng)配置完成了,下面就開始運行案例了

案例運行

這里使用的是龍書的第一個案例

d3dUtility.h文件代碼

#ifndef __d3dUtilityH__ #define __d3dUtilityH__#include <d3dx9.h> #include <string>namespace d3d {bool InitD3D(HINSTANCE hInstance, // [in] Application instance.int width, int height, // [in] Backbuffer dimensions.bool windowed, // [in] Windowed (true)or full screen (false).D3DDEVTYPE deviceType, // [in] HAL or REFIDirect3DDevice9** device);// [out]The created device.int EnterMsgLoop( bool (*ptr_display)(float timeDelta));LRESULT CALLBACK WndProc(HWND hwnd,UINT msg, WPARAM wParam,LPARAM lParam);template<class T> void Release(T t){if( t ){t->Release();t = 0;}}template<class T> void Delete(T t){if( t ){delete t;t = 0;}} }#endif // __d3dUtilityH__

d3dInit.cpp文件代碼

#include "d3dUtility.h"// // Globals //IDirect3DDevice9* Device = 0; // // Framework Functions //bool Setup() {// Nothing to setup in this sample.return true; }void Cleanup() {// Nothing to cleanup in this sample. }bool Display(float timeDelta) {if( Device ) // Only use Device methods if we have a valid device.{// Instruct the device to set each pixel on the back buffer black -// D3DCLEAR_TARGET: 0x00000000 (black) - and to set each pixel on// the depth buffer to a value of 1.0 - D3DCLEAR_ZBUFFER: 1.0f.Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0);// Swap the back and front buffers.Device->Present(0, 0, 0, 0);}return true; }// // WndProc // LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch( msg ){case WM_DESTROY:::PostQuitMessage(0);break;case WM_KEYDOWN:if( wParam == VK_ESCAPE )::DestroyWindow(hwnd);break;}return ::DefWindowProc(hwnd, msg, wParam, lParam); }// // WinMain // int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE prevInstance, PSTR cmdLine,int showCmd) {if(!d3d::InitD3D(hinstance,640, 480, true, D3DDEVTYPE_HAL, &Device)){::MessageBox(0, "InitD3D() - FAILED", 0, 0);return 0;}if(!Setup()){::MessageBox(0, "Setup() - FAILED", 0, 0);return 0;}d3d::EnterMsgLoop( Display );Cleanup();Device->Release();return 0; }

d3dUtility.cpp文件代碼

#include "d3dUtility.h"bool d3d::InitD3D(HINSTANCE hInstance,int width, int height,bool windowed,D3DDEVTYPE deviceType,IDirect3DDevice9** device) {//// Create the main application window.//WNDCLASS wc;wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = (WNDPROC)d3d::WndProc; wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.hIcon = LoadIcon(0, IDI_APPLICATION);wc.hCursor = LoadCursor(0, IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszMenuName = 0;wc.lpszClassName = "Direct3D9App";if( !RegisterClass(&wc) ) {::MessageBox(0, "RegisterClass() - FAILED", 0, 0);return false;}HWND hwnd = 0;hwnd = ::CreateWindow("Direct3D9App", "Direct3D9App", WS_EX_TOPMOST,0, 0, width, height,0 /*parent hwnd*/, 0 /* menu */, hInstance, 0 /*extra*/); if( !hwnd ){::MessageBox(0, "CreateWindow() - FAILED", 0, 0);return false;}::ShowWindow(hwnd, SW_SHOW);::UpdateWindow(hwnd);//// Init D3D: //HRESULT hr = 0;// Step 1: Create the IDirect3D9 object.IDirect3D9* d3d9 = 0;d3d9 = Direct3DCreate9(D3D_SDK_VERSION);if( !d3d9 ){::MessageBox(0, "Direct3DCreate9() - FAILED", 0, 0);return false;}// Step 2: Check for hardware vp.D3DCAPS9 caps;d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);int vp = 0;if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;elsevp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;// Step 3: Fill out the D3DPRESENT_PARAMETERS structure.D3DPRESENT_PARAMETERS d3dpp;d3dpp.BackBufferWidth = width;d3dpp.BackBufferHeight = height;d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;d3dpp.BackBufferCount = 1;d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;d3dpp.MultiSampleQuality = 0;d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow = hwnd;d3dpp.Windowed = windowed;d3dpp.EnableAutoDepthStencil = true; d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;d3dpp.Flags = 0;d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;// Step 4: Create the device.hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT, // primary adapterdeviceType, // device typehwnd, // window associated with devicevp, // vertex processing&d3dpp, // present parametersdevice); // return created deviceif( FAILED(hr) ){// try again using a 16-bit depth bufferd3dpp.AutoDepthStencilFormat = D3DFMT_D16;hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT,deviceType,hwnd,vp,&d3dpp,device);if( FAILED(hr) ){d3d9->Release(); // done with d3d9 object::MessageBox(0, "CreateDevice() - FAILED", 0, 0);return false;}}d3d9->Release(); // done with d3d9 objectreturn true; }int d3d::EnterMsgLoop( bool (*ptr_display)(float timeDelta) ) {MSG msg;::ZeroMemory(&msg, sizeof(MSG));static float lastTime = (float)timeGetTime(); while(msg.message != WM_QUIT){if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE)){::TranslateMessage(&msg);::DispatchMessage(&msg);}else{ float currTime = (float)timeGetTime();float timeDelta = (currTime - lastTime)*0.001f;ptr_display(timeDelta);lastTime = currTime;}}return msg.wParam; }

運行截圖

初學(xué)萌新,難免有什么不足之處,望大家多多批評

總結(jié)

以上是生活随笔為你收集整理的关于vs2017如何配置和运行龙书DX9案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。