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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

dx相关代码

發(fā)布時(shí)間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dx相关代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


1、空窗口

#include "stdafx.h" #include <stdio.h>//全局變量聲明 HINSTANCE hInst; HBITMAP man[7]; HDC hdc,mdc; HWND hWnd; DWORD tPre,tNow,tCheck; //聲明三個(gè)函數(shù)來記錄時(shí)間,tPre記錄上一次繪圖的時(shí)間,tNow記錄此次準(zhǔn)備繪圖的時(shí)間,tCheck記錄每秒開始的時(shí)間 int num,frame,fps; //num用來記錄圖號(hào),frame用來累加每次畫面更新的次數(shù),fps(frame per second)用來記錄每秒畫面更新的次數(shù)//全局函數(shù)的聲明 ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); void MyPaint(HDC hdc);//***WinMain函數(shù),程序入口點(diǎn)函數(shù)************************************** int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {MSG msg;MyRegisterClass(hInstance);//運(yùn)行初始化函數(shù)if (!InitInstance (hInstance, nCmdShow)) {return FALSE;}//游戲循環(huán)GetMessage(&msg,NULL,NULL,NULL);while( msg.message!=WM_QUIT ){if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) ){TranslateMessage( &msg );DispatchMessage( &msg );}else{tNow = GetTickCount();if(tNow-tPre >= 100) //當(dāng)此次循環(huán)運(yùn)行與上次繪圖時(shí)間相差0.1秒時(shí)再進(jìn)行重繪操作MyPaint(hdc);}}return msg.wParam; }//****設(shè)計(jì)一個(gè)窗口類,類似填空題,使用窗口結(jié)構(gòu)體************************* ATOM MyRegisterClass(HINSTANCE hInstance) {WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = (WNDPROC)WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = NULL;wcex.hCursor = NULL;wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = NULL;wcex.lpszClassName = "canvas";wcex.hIconSm = NULL;return RegisterClassEx(&wcex); }//****初始化函數(shù)************************************* // 從文件加載位圖 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {char filename[20] = "";int i;hInst = hInstance;hWnd = CreateWindow("canvas", "動(dòng)畫演示" , WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);if (!hWnd){return FALSE;}MoveWindow(hWnd,10,10,600,450,true);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);hdc = GetDC(hWnd);mdc = CreateCompatibleDC(hdc);//載入各個(gè)人物位圖for(i=0;i<7;i++){sprintf(filename,"man%d.bmp",i);man[i] = (HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,640,480,LR_LOADFROMFILE);}num = 0;frame = 0;MyPaint(hdc);return TRUE; }//****自定義繪圖函數(shù)********************************* // 1.計(jì)算與顯示每秒畫面更新次數(shù) // 2.按照?qǐng)D號(hào)順序進(jìn)行窗口貼圖 void MyPaint(HDC hdc) {char str[40] = "";if(num == 7)num = 0;frame++; //畫面更新次數(shù)加1if(tNow - tCheck >= 1000) //判斷此次繪圖時(shí)間由前一秒算起是否已經(jīng)達(dá)到1秒鐘的時(shí)間間隔。若是,則將目前的'frame'值賦給"fps",表示這一秒內(nèi)所更新的畫面次數(shù),然后將“frame”值回0,并重設(shè)下次計(jì)算每秒畫面數(shù)的起始時(shí)間"iCheck"。{fps = frame;frame = 0;tCheck = tNow;}SelectObject(mdc,man[num]); //選用要更新的圖案到mdc中,再輸出顯示每秒畫面更新次數(shù)的字符串到mdc上,最后將mdc的內(nèi)容貼到窗口中。sprintf(str,"每秒顯示 %d個(gè)畫面",fps);TextOut(mdc,0,0,str,strlen(str));BitBlt(hdc,0,0,600,450,mdc,0,0,SRCCOPY);tPre = GetTickCount(); //記錄此次繪圖時(shí)間,供下次游戲循環(huán)中判斷是否已經(jīng)達(dá)到畫面更新操作設(shè)定的時(shí)間間隔。num++; }//******消息處理函數(shù)********************************* LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {int i;switch (message){case WM_DESTROY: //窗口結(jié)束消息DeleteDC(mdc);for(i=0;i<7;i++)DeleteObject(man[i]);ReleaseDC(hWnd,hdc);PostQuitMessage(0);break;default: //其他消息return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }


2、代碼段 結(jié)構(gòu)體好習(xí)慣

代碼段一 Dx11DemoBases類的頭文件[cpp] view plaincopyprint? #ifndef _DEMO_BASE_H_ #define _DEMO_BASE_H_ #include<d3d11.h> #include<d3dx11.h> #include<DxErr.h> class Dx11DemoBase { public: Dx11DemoBase(); virtual ~Dx11DemoBase(); bool Initialize( HINSTANCE hInstance, HWND hwnd ); void Shutdown( ); virtual bool LoadContent( ); virtual void UnloadContent( ); virtual void Update( float dt ) = 0; virtual void Render( ) = 0; protected: HINSTANCE hInstance_; HWND hwnd_; D3D_DRIVER_TYPE driverType_; D3D_FEATURE_LEVEL featureLevel_; ID3D11Device* d3dDevice_; ID3D11DeviceContext* d3dContext_; IDXGISwapChain* swapChain_; ID3D11RenderTargetView* backBufferTarget_; }; #endif 上面這段代碼中我們可以看到最精簡(jiǎn)的D3D對(duì)象,以protected類成員的形式存在于類之中。在類體外初始化變量是比較好的編程習(xí)慣,而且效率比讓先調(diào)用拷貝構(gòu)造函數(shù),再調(diào)用默認(rèn)構(gòu)造函數(shù)要高得多。

3、二維的D3D11_TEXTURE2D_DESC聲明形式如下:

二維的D3D11_TEXTURE2D_DESC聲明形式如下:

?

[cpp]?view plaincopyprint?
  • typedef?struct?D3D11_TEXTURE2D_DESC?{??
  • ??
  • UINT?Width;??
  • ??
  • UINT?Height;??
  • ??
  • UINT?MipLevels;??
  • ??
  • UINT?ArraySize;??
  • ??
  • DXGI_FORMAT?Format;??
  • ??
  • DXGI_SAMPLE_DESC?SampleDesc;??
  • ??
  • D3D11_USAGE?Usage;??
  • ??
  • UINT?BindFlags;??
  • ??
  • UINT?CPUAccessFlags;??
  • ??
  • UINT?MiscFlags;??
  • ??
  • }?D3D11_TEXTURE2D_DESC
  • 4、 ?Direct3D初始化四部曲

  • /*****************************************************************************************??
  • //?Desc:?庫文件定義部分????
  • //*****************************************************************************************???
  • #pragma?comment(lib,"d3d9.lib")??
  • #pragma?comment(lib,"d3dx9.lib")??
  • ??
  • //*****************************************************************************************??
  • //?Name:?Direct3D_Init(?)??
  • //?Desc:?初始化Direct3D??
  • //?Point:【Direct3D初始化四部曲】??
  • //??????1.初始化四部曲之一,創(chuàng)建Direct3D接口對(duì)象??
  • //??????2.初始化四部曲之二,獲取硬件設(shè)備信息??
  • //??????3.初始化四部曲之三,填充結(jié)構(gòu)體??
  • //??????4.初始化四部曲之四,創(chuàng)建Direct3D設(shè)備接口??
  • //*****************************************************************************************??
  • ??
  • HRESULT?Direct3D_Init(HWND?hwnd)??
  • {??
  • ??
  • ????//--------------------------------------------------------------------------------------??
  • ????//?【Direct3D初始化四步曲之一,創(chuàng)接口】:創(chuàng)建Direct3D接口對(duì)象,?以便用該Direct3D對(duì)象創(chuàng)建Direct3D設(shè)備對(duì)象??
  • ????//--------------------------------------------------------------------------------------??
  • ????LPDIRECT3D9??pD3D?=?NULL;?//Direct3D接口對(duì)象的創(chuàng)建??
  • ????if(?NULL?==?(?pD3D?=?Direct3DCreate9(?D3D_SDK_VERSION?)?)?)?//初始化Direct3D接口對(duì)象,并進(jìn)行DirectX版本協(xié)商??
  • ????????????return?E_FAIL;??
  • ??
  • ????//--------------------------------------------------------------------------------------??
  • ????//?【Direct3D初始化四步曲之二,取信息】:獲取硬件設(shè)備信息??
  • ????//--------------------------------------------------------------------------------------??
  • ????D3DCAPS9?caps;?int?vp?=?0;??
  • ????if(?FAILED(?pD3D->GetDeviceCaps(?D3DADAPTER_DEFAULT,?D3DDEVTYPE_HAL,?&caps?)?)?)??
  • ????????{??
  • ????????????return?E_FAIL;??
  • ????????}??
  • ????if(?caps.DevCaps?&?D3DDEVCAPS_HWTRANSFORMANDLIGHT?)??
  • ????????vp?=?D3DCREATE_HARDWARE_VERTEXPROCESSING;???//支持硬件頂點(diǎn)運(yùn)算,我們就采用硬件頂點(diǎn)運(yùn)算,妥妥的??
  • ????else??
  • ????????vp?=?D3DCREATE_SOFTWARE_VERTEXPROCESSING;?//不支持硬件頂點(diǎn)運(yùn)算,無奈只好采用軟件頂點(diǎn)運(yùn)算??
  • ??
  • ????//--------------------------------------------------------------------------------------??
  • ????//?【Direct3D初始化四步曲之三,填內(nèi)容】:填充D3DPRESENT_PARAMETERS結(jié)構(gòu)體??
  • ????//--------------------------------------------------------------------------------------??
  • ????D3DPRESENT_PARAMETERS?d3dpp;???
  • ????ZeroMemory(&d3dpp,?sizeof(d3dpp));??
  • ????d3dpp.BackBufferWidth????????????=?SCREEN_WIDTH;??
  • ????d3dpp.BackBufferHeight???????????=?SCREEN_LEIGHT;??
  • ????d3dpp.BackBufferFormat???????????=?D3DFMT_A8R8G8B8;??
  • ????d3dpp.BackBufferCount????????????=?1;??
  • ????d3dpp.MultiSampleType????????????=?D3DMULTISAMPLE_NONE;??
  • ????d3dpp.MultiSampleQuality?????????=?0;??
  • ????d3dpp.SwapEffect?????????????????=?D3DSWAPEFFECT_DISCARD;???
  • ????d3dpp.hDeviceWindow??????????????=?hwnd;??
  • ????d3dpp.Windowed???????????????????=?true;??
  • ????d3dpp.EnableAutoDepthStencil?????=?true;???
  • ????d3dpp.AutoDepthStencilFormat?????=?D3DFMT_D24S8;??
  • ????d3dpp.Flags??????????????????????=?0;??
  • ????d3dpp.FullScreen_RefreshRateInHz?=?0;??
  • ????d3dpp.PresentationInterval???????=?D3DPRESENT_INTERVAL_IMMEDIATE;??
  • ??
  • ????//--------------------------------------------------------------------------------------??
  • ????//?【Direct3D初始化四步曲之四,創(chuàng)設(shè)備】:創(chuàng)建Direct3D設(shè)備接口??
  • ????//--------------------------------------------------------------------------------------??
  • ????if(FAILED(pD3D->CreateDevice(D3DADAPTER_DEFAULT,?D3DDEVTYPE_HAL,???
  • ????????hwnd,?vp,?&d3dpp,?&g_pd3dDevice)))??
  • ????????return?E_FAIL;??
  • ??
  • ??
  • ??
  • ????SAFE_RELEASE(pD3D)?//LPDIRECT3D9接口對(duì)象的使命完成,我們將其釋放掉??
  • ??
  • ????return?S_OK;??
  • } ?
  • 總結(jié)

    以上是生活随笔為你收集整理的dx相关代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 日日夜夜人人 | 九九久久国产视频 | 色欲av无码精品一区 | 欧美一级激情 | 又色又爽又黄无遮挡的免费视频 | 亚洲一区二区三区三州 | 国产人成 | 牛牛电影国产一区二区 | 国产成人精品一二三区 | 亚洲图片在线播放 | 乌克兰极品av女神 | 青青草伊人| 黄色成人小视频 | 毛片免费在线观看视频 | 国产sm网站 | 欧美综合激情 | 成人爽爽视频 | 久久字幕| 在线观看国产欧美 | 玉米地疯狂的吸允她的奶视频 | 久久精品99国产精品日本 | 日本伊人网 | 日韩中文av | 污污污污污污www网站免费 | 蜜桃精品视频在线观看 | 日韩在线观看av | 国产亚洲精品网站 | 自由成熟xxxx色视频 | 寡妇激情做爰呻吟 | 国产精品搬运 | 国产精品乱码一区二区视频 | 亚洲激情视频小说 | 亚洲欧美v| 国产日产精品一区 | 日本特级片 | 91成人小视频| 操干网| 欧美456 | 岛国午夜视频 | 免费观看一级黄色片 | 香港三级日本三级三69 | 欧美精品久久久久久久 | 中日韩男男gay无套 人人草人人干 | www黄色| 自拍偷拍中文字幕 | av资源网址 | 日本特黄色片 | 日本色视频 | 丰满秘书被猛烈进入高清播放在 | 综合亚洲色图 | 最近中文字幕第一页 | 天天爽夜夜操 | 久久国产视频播放 | 欧美国产日本 | 天堂中文在线官网 | 草草影院最新 | 成人片在线看 | 日韩不卡一区二区三区 | 又黄又免费的网站 | 久久精品国产亚洲AV成人雅虎 | 国产成人精品免费网站 | 色网站在线看 | 欧美特级aaa | 国产一级久久久久毛片精品 | 精品久久精品 | 亚洲字幕成人中文在线观看 | 在线免费看污视频 | 中文字幕伊人 | 亚州视频在线 | 国产特级毛片aaaaaa | 中国黄色三级 | 日韩免费观看av | 久久久久噜噜噜亚洲熟女综合 | 成人av播放 | 成人国产精品免费观看视频 | 天堂视频一区 | 国产麻豆精品一区 | 激情四射网 | 国产激情视频一区二区 | 亚洲狠狠爱 | 在线中文视频 | jizzjizz8| 成人一区二 | 中文字幕在线视频一区二区三区 | 又黄又爽的网站 | 久久久99精品国产一区二区三区 | 色综合久 | 中国浓毛少妇毛茸茸 | 福利片第一页 | 婷婷六月综合网 | 91香蕉视频在线观看免费 | 99视频导航 | 欧美日韩在线观看成人 | 久久久久久九九九 | 亚洲天堂av一区二区三区 | 中文字幕不卡 | 超碰精品在线 | 污污视频免费观看 | 滋润少妇h高h |