• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            李錦俊(mybios)的blog

            游戲開發(fā) C++ Cocos2d-x OpenGL DirectX 數(shù)學(xué) 計算機(jī)圖形學(xué) SQL Server

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              86 Posts :: 0 Stories :: 370 Comments :: 0 Trackbacks

            公告

            QQ:30743734
            EMain:mybios@qq.com

            常用鏈接

            留言簿(16)

            我參與的團(tuán)隊

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 370257
            • 排名 - 67

            最新評論

            閱讀排行榜

            評論排行榜

            13行,#define?D3DFVF_CUSTOMVERTEX?(D3DFVF_XYZRHW?|?D3DFVF_DIFFUSE)是使用變換過的頂點格式,意思是在執(zhí)行渲染流水線的過程中,不作頂點變換。換言之,可以直接用屏幕象素的單位大小來定義頂點的坐標(biāo)。再換言之,就是說用這種頂點格式,可以簡單的實現(xiàn)Overlay(不知道怎么翻譯這個單詞)

            ??1 #include? < D3DX9.h >
            ??2 #include? < string >
            ??3 typedef?std:: string ?String;
            ??4 #define ?SAFE_RELEASE(o)?{if(o){o->Release();o?=?0;}}
            ??5
            ??6
            ??7 LPDIRECT3D9?g_pD3D? = ? 0 ;???????????????? // ?D3D?Driver
            ??8 LPDIRECT3DDEVICE9?g_pd3dDevice? = ? 0 ;???? // ?D3D?設(shè)備
            ??9 D3DCAPS9?g_Caps? = ? {(D3DDEVTYPE) 0 } ;???? // ?D3D?的帽子
            ?10 LPDIRECT3DVERTEXBUFFER9?g_pVB? = ? 0 ;???? // ?頂點緩沖區(qū)
            ?11
            ?12 // ?頂點定義,使用變換過的頂點坐標(biāo)格式
            ?13 #define ?D3DFVF_CUSTOMVERTEX?(D3DFVF_XYZRHW?|?D3DFVF_DIFFUSE)
            ?14 struct ?CUSTOMVERTEX
            ?15 {
            ?16 ????D3DXVECTOR4?position;
            ?17 ????D3DCOLOR?color;
            ?18 }
            ;
            ?19
            ?20 // ?錯誤記錄
            ?21 void ?D3DErr(String?strMsg)
            ?22 {
            ?23 ????MessageBox( 0 ?,?strMsg.c_str()?,? " 錯誤 " ?,?MB_OK);
            ?24 }

            ?25
            ?26 // ?初始化頂點緩沖區(qū)
            ?27 HRESULT?InitVB()
            ?28 {
            ?29 ???? // ?創(chuàng)建頂點緩沖區(qū)
            ?30 ???? if (FAILED(g_pd3dDevice -> CreateVertexBuffer( 3 ? * ? sizeof (CUSTOMVERTEX)?,? 0 ?,?D3DFVF_CUSTOMVERTEX?,?D3DPOOL_DEFAULT?,? & g_pVB?,? 0 )))
            ?31 ???????? return ?E_FAIL;
            ?32
            ?33 ????CUSTOMVERTEX? * pVertecies;
            ?34 ???? // ?鎖定緩沖區(qū)
            ?35 ???? if (SUCCEEDED(g_pVB -> Lock( 0 ?,? 3 ? * ? sizeof (CUSTOMVERTEX)?,?( void ** ) & pVertecies?,? 0 )))
            ?36 ???? {
            ?37 ????????pVertecies[ 0 ].position? = ?D3DXVECTOR4( 0 ?,? 0 ?,? 0.5 ?,? 1 );
            ?38 ????????pVertecies[ 1 ].position? = ?D3DXVECTOR4( 512 ?,? 0 ?,? 0.5 ?,? 1 );
            ?39 ????????pVertecies[ 2 ].position? = ?D3DXVECTOR4( 0 ?,? 512 ?,? 0.5 ?,? 1 );
            ?40
            ?41 ????????pVertecies[ 0 ].color? = ?D3DCOLOR_XRGB( 255 ?,? 0 ?,? 0 );
            ?42 ????????pVertecies[ 1 ].color? = ?D3DCOLOR_XRGB( 0 ?,? 255 ?,? 0 );
            ?43 ????????pVertecies[ 2 ].color? = ?D3DCOLOR_XRGB( 0 ?,? 0 ?,? 255 );
            ?44
            ?45 ????????g_pVB -> Unlock();
            ?46 ????}

            ?47 ???? else
            ?48 ???? {
            ?49 ???????? return ?E_FAIL;
            ?50 ????}

            ?51 ???? return ?S_OK;
            ?52 }

            ?53
            ?54 // ?初始化?D3D?設(shè)備
            ?55 HRESULT?InitD3D(HWND?hWnd)
            ?56 {
            ?57 ???? // ?創(chuàng)建?D3D?Driver
            ?58 ???? if (NULL? == ?(g_pD3D? = ?Direct3DCreate9(D3D_SDK_VERSION)))
            ?59 ???? {
            ?60 ????????D3DErr( " 無法創(chuàng)建Direct3D9設(shè)備 " );
            ?61 ???????? return ?E_FAIL;
            ?62 ????}

            ?63 ???? // ?獲取當(dāng)前顯示模式
            ?64 ????D3DDISPLAYMODE?d3ddm;
            ?65 ???? if (FAILED(g_pD3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT?,? & d3ddm)))
            ?66 ???? {
            ?67 ????????D3DErr( " 無法獲取D3D顯示器模式 " );
            ?68 ???????? return ?E_FAIL;
            ?69 ????}

            ?70
            ?71 ???? // ?獲取窗口的大小
            ?72 ????RECT?rect;
            ?73 ????GetClientRect(hWnd?,? & rect);
            ?74
            ?75 ???? // ?填充參數(shù)
            ?76 ????D3DPRESENT_PARAMETERS?d3dpp;
            ?77 ????memset( & d3dpp?,? 0 ?,? sizeof (d3dpp));
            ?78 ????d3dpp.BackBufferFormat? = ?d3ddm.Format;
            ?79 ????d3dpp.BackBufferWidth? = ?rect.right? - ?rect.left;
            ?80 ????d3dpp.BackBufferHeight? = ?rect.bottom? - ?rect.top;
            ?81 ????d3dpp.SwapEffect? = ?D3DSWAPEFFECT_DISCARD;
            ?82 ????d3dpp.Windowed? = ? true ;
            ?83
            ?84 ???? // ?獲取帽子
            ?85 ???? if (FAILED(g_pD3D -> GetDeviceCaps(D3DADAPTER_DEFAULT?,?D3DDEVTYPE_HAL?,? & g_Caps)))
            ?86 ???? {
            ?87 ????????D3DErr( " 獲取D3D?帽子時發(fā)生錯誤 " );
            ?88 ???????? return ?E_FAIL;
            ?89 ????}

            ?90
            ?91 ???? // ?創(chuàng)建D3D設(shè)備
            ?92 ???? if (FAILED(g_pD3D -> CreateDevice(D3DADAPTER_DEFAULT
            ?93 ????????,?D3DDEVTYPE_HAL
            ?94 ????????,?hWnd
            ?95 ???????? // ?檢查是否支持硬件頂點處理
            ?96 ????????,?g_Caps.DevCaps? & ?D3DDEVCAPS_HWTRANSFORMANDLIGHT? ? ?D3DCREATE_HARDWARE_VERTEXPROCESSING?:?D3DCREATE_SOFTWARE_VERTEXPROCESSING
            ?97 ????????,? & d3dpp
            ?98 ????????,? & g_pd3dDevice
            ?99 ????????)
            100 ????????))
            101 ???? {
            102 ????????D3DErr( " 創(chuàng)建D3D設(shè)備時發(fā)生錯誤 " );
            103 ???????? return ?E_FAIL;
            104 ????}

            105
            106 ???? // ?創(chuàng)建頂點緩沖區(qū)
            107 ???? if (FAILED(InitVB()))
            108 ???????? return ?E_FAIL;
            109 ???? return ?S_OK;
            110 }

            111
            112 // ?清空所有占用的資源
            113 void ?CleanUp()
            114 {
            115 ????SAFE_RELEASE(g_pVB);
            116 ????SAFE_RELEASE(g_pd3dDevice);
            117 ????SAFE_RELEASE(g_pD3D);
            118 }

            119
            120 // ?渲染場景
            121 void ?Render()
            122 {
            123 ???? if (g_pd3dDevice)
            124 ???? {
            125 ???????? // ?清空場景
            126 ????????g_pd3dDevice -> Clear( 0 ?,? 0 ?,?D3DCLEAR_TARGET?,?D3DCOLOR_XRGB( 0 ?,? 0 ?,? 255 )?,? 1 ?,? 0 );
            127 ???????? // ?開始渲染
            128 ???????? if (SUCCEEDED(g_pd3dDevice -> BeginScene()))
            129 ???????? {
            130 ????????????g_pd3dDevice -> SetRenderState(D3DRS_LIGHTING?,?FALSE);
            131 ????????????g_pd3dDevice -> SetStreamSource( 0 ?,?g_pVB?,? 0 ?,? sizeof (CUSTOMVERTEX));
            132 ????????????g_pd3dDevice -> SetFVF(D3DFVF_CUSTOMVERTEX);
            133 ????????????g_pd3dDevice -> DrawPrimitive(D3DPT_TRIANGLELIST?,? 0 ?,? 1 );
            134 ????????????g_pd3dDevice -> EndScene();
            135 ????????}

            136 ???????? // ?顯示
            137 ????????g_pd3dDevice -> Present( 0 ?,? 0 ?,? 0 ?,? 0 );
            138 ????}

            139 }

            140
            141 // ?消息處理
            142 LRESULT?WINAPI?MsgProc(HWND?hWnd?,?UINT?message?,?WPARAM?wParam?,?LPARAM?lParam)
            143 {
            144 ???? switch (message)
            145 ???? {
            146 ???? case ?WM_DESTROY:
            147 ????????CleanUp();
            148 ????????PostQuitMessage( 0 );
            149 ???????? break ;
            150 ????}

            151 ???? return ?::DefWindowProc(hWnd,?message?,?wParam?,?lParam);
            152 }

            153
            154 // ?Windows?入口
            155 int ?WINAPI?WinMain(IN?HINSTANCE?hInstance,?IN?HINSTANCE?hPrevInstance,?IN?LPSTR?lpCmdLine,?IN? int ?nShowCmd?)
            156 {
            157 ????WNDCLASS?wndClass;
            158 ????memset( & wndClass?,? 0 ?,? sizeof (wndClass));
            159 ????wndClass.hInstance? = ?hInstance;
            160 ????wndClass.lpszClassName? = ? " Tutorial02 " ;
            161 ????wndClass.lpfnWndProc? = ?MsgProc;
            162 ????RegisterClass( & wndClass);
            163
            164 ???? // ?創(chuàng)建窗口
            165 ????HWND?hWnd? = ?CreateWindow( " Tutorial02 " ?,? " Tutorial02?Vertex?Buffer " ?
            166 ????????,?WS_OVERLAPPEDWINDOW?,? 0 ?,? 0 ?,? 512 ?, 512 ?,?GetDesktopWindow()
            167 ????????,? 0 ?,?wndClass.hInstance?,? 0 );
            168 ???? // ?顯示窗口
            169 ????ShowWindow(hWnd?,?SW_SHOWDEFAULT);
            170 ????UpdateWindow(hWnd);
            171
            172 ???? // ?初始化?D3D?設(shè)備
            173 ???? if (SUCCEEDED(InitD3D(hWnd)))
            174 ???? {
            175 ???????? // ?消息處理循環(huán)
            176 ????????MSG?msg;
            177 ????????memset( & msg?,? 0 ?,? sizeof (msg));
            178 ???????? while (msg.message? != ?WM_QUIT)
            179 ???????? {
            180 ???????????? if (PeekMessage( & msg?,? 0 ?,? 0 ?,? 0 ?,?PM_REMOVE))
            181 ???????????? {
            182 ????????????????TranslateMessage( & msg);
            183 ????????????????DispatchMessage( & msg);
            184 ????????????}

            185 ???????????? else
            186 ???????????? {
            187 ????????????????Render();
            188 ????????????}

            189 ????????}

            190 ????}

            191 ???? // ?清空場景
            192 ????CleanUp();
            193
            194 ????UnregisterClass( " Tutorial02 " ?,?wndClass.hInstance);
            195
            196 ???? return ? 0 ;
            197 }

            ?

            posted on 2006-11-16 10:47 李錦俊(mybios) 閱讀(697) 評論(0)  編輯 收藏 引用 所屬分類: Direct3D
            久久夜色精品国产亚洲| 久久综合亚洲色一区二区三区| 久久天天躁狠狠躁夜夜avapp| 成人午夜精品无码区久久 | 国产精品美女久久久m| 中文字幕久久精品| 99久久99久久精品国产片果冻| 国产V综合V亚洲欧美久久| 亚洲色欲久久久综合网东京热| 久久综合色老色| 久久只这里是精品66| 性欧美大战久久久久久久| 亚洲国产高清精品线久久 | 久久久久久久久久久免费精品 | 囯产精品久久久久久久久蜜桃| 久久久久久久久波多野高潮| 无码任你躁久久久久久久| 精品久久人人爽天天玩人人妻 | 波多野结衣久久一区二区| 免费久久人人爽人人爽av| 久久99精品久久久大学生| 久久99精品久久久久子伦| 九九久久自然熟的香蕉图片| 国产91色综合久久免费| 精品久久久久久无码中文字幕| 三级三级久久三级久久| 亚洲精品乱码久久久久久蜜桃不卡 | 一极黄色视频久久网站| 欧美噜噜久久久XXX| 91精品婷婷国产综合久久| 精品无码久久久久久久久久| 久久久SS麻豆欧美国产日韩| 久久精品国产半推半就| 亚洲?V乱码久久精品蜜桃 | 蜜桃麻豆www久久| 欧美激情精品久久久久久久| 亚洲精品无码久久千人斩| 国产成人综合久久久久久| 国产精品99久久久久久宅男小说| 2020最新久久久视精品爱| 婷婷久久精品国产|