Direct3D基礎知識

來源:互聯網
上載者:User
 

重新從頭開始學習DX,以前太急於求成了,很多基礎知識都沒掌握就開始寫程式了,結果出了問題很難解決.  1.       D3D 體繫結構D3D與GDI處與同一層次,區別在於,D3D可以使用HAL(Hardware Abstraction Layer)通過DDI來訪問圖形硬體,充分發揮硬體效能. 2.       D3D 裝置對象 2.1 D3D 裝置類型        HAL,支援硬體加速光柵化和硬體或軟體處理        Software Device,硬體類比層        REF,reference device,SDK專用.不過nVidia的PerfHUD就是用的這種裝置類型 2.2   D3DPRESENT_PARAMETERS
1: typedef struct D3DPRESENT_PARAMETERS {
 2:     UINT BackBufferWidth, BackBufferHeight;//背景緩衝區寬高
 3:     D3DFORMAT BackBufferFormat;//背景緩衝區像素格式
 4:     UINT BackBufferCount;//背景緩衝區的數量
 5:     D3DMULTISAMPLE_TYPE MultiSampleType;//多重採樣類型,用於反鋸齒
 6:     DWORD MultiSampleQuality;
 7:     D3DSWAPEFFECT SwapEffect;//背景緩衝區複製到前端緩衝區的方式
 8:     HWND hDeviceWindow;//圖形繪製視窗
 9:     BOOL Windowed;//視窗/全屏
10:     BOOL EnableAutoDepthStencil;
11:     D3DFORMAT AutoDepthStencilFormat;
12:     DWORD Flags;
13:     UINT FullScreen_RefreshRateInHz;//重新整理速率,視窗時必須為0
14:     UINT PresentationInterval;
15: } D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
BackBufferWidth與BackBufferHeight為0時系統自動使用當前視窗客戶區寬高BackBufferCount取0和1時都表示一個背景緩衝區hDeviceWindow為NULL時預設為當前被啟用的視窗BackBufferFormat取D3DFMT_UNKNOWN時,像素格式取當前顯卡的像素格式 2.3   CreateDevice 中的BehaviorFlag D3DCREATE_HARDWARE_VERTEXPROCESSING,硬體頂點運算 D3DCREATE_MIXED_VERTEXPROCESSING,軟硬體共同進行頂點運算 D3DCREATE_MULTITHREADED,多線程繪製,會降低效能 D3DCREATE_SOFTWARE_VERTEXPROCESSING,軟體頂點運算               通常某些整合顯卡不支援硬體頂點運算,如intel 的GMA900/950 2.4   D3D 繪製Clear(),可以清空顏色緩衝區,深度緩衝區,樣板緩衝區.可以選擇清除地區BeginScene()和EndScene()不允許嵌套Present(),可以指定更新地區(髒矩形技術?),不過要求用D3DSWAPEFFECT_COPY 3.       D3D 裝置對象 全螢幕模式:               枚舉顯示適配器(多顯示器適用)               IDirect3D9::EnumAdpterModes()枚舉支援的顯示模式               IDirect3D9::CheckDeviceType()檢測顯示模式是否支援硬體加速               IDirect3D9::GetDeviceCaps()檢查渲染裝置是否支援所需要的功能(顯卡相容性檢測)               IDirect3D9::CheckDeviceFormat()檢測其它表面格式是否支援               IDirect3D9::CheckDepthStencilMatch()檢測深度/樣板緩衝區是否和渲染目標相容               IDirect3D9::CheckDeviceMultiSampleType()檢查裝置是否支援多重採樣(反鋸齒用) 視窗模式:               直接用D3DADAPTER_DEFAULT就可以忽略前兩步了,剩下的都一樣 裝置丟失:                     圖形顯示丟失焦點,必須重新建立相關資源                     任何顯存資源在裝置丟失時必須銷毀,包括CreateAdditionalSwapChain()建立的交換鏈結和D3DPOOL_DEFAULT格式的記憶體資源 4.       D3D 表面表面格式:通常有兩個屬性,表面大小與顏色位元表面翻轉:將背景緩衝區移動到前端緩衝區的過程交換鏈結:按順序逐個提交到前台顯示的多個背景緩衝區的集合        多個視圖的應用程式用多個交換鏈結訪問表面記憶體:IDirect3DSurface9::LockRect(),不適用於多重採樣背景緩衝區

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.